小编Don*_*ero的帖子

为什么java.util.Set没有get(int index)?

我确定这是一个很好的理由,但有人可以解释为什么java.util.Set界面缺乏get(int Index),或任何类似的get()方法?

似乎套装非常适合放入物品,但我找不到从中检索单个物品的优雅方式.

如果我知道我想要第一个项目,我可以使用set.iterator().next(),但是否则我似乎必须转换为数组来检索特定索引处的项目?

从集合中检索数据的适当方法是什么?(除了使用迭代器)

我确信它被排除在API之外意味着有一个很好的理由不这样做 - 有人可以开导我吗?

编辑: 这里有一些非常好的答案,还有一些说"更多背景".特定场景是一个dbUnit测试,我可以合理地断言查询返回的集只有一个项目,我试图访问该项目.

但是,没有这种情况,这个问题更有效,因为它仍然更受关注:

集合和列表之间有什么区别.

感谢所有人在下面的精彩答案.

java collections set data-structures

234
推荐指数
10
解决办法
19万
查看次数

ArrayList:大小如何增加?

我有一个关于Java的基本问题ArrayList.

ArrayList被声明和初始化使用默认构造,对于10个元件的存储器空间被创建.现在,当我添加第11个元素时,会发生什么?是否会创建具有20(或更多)元素容量的新内存空间(这需要将元素从第一个内存位置复制到新位置)还是其他一些东西?

我查了这里.但我没有找到答案.

请分享知识.谢谢.

java arrays collections arraylist

64
推荐指数
8
解决办法
11万
查看次数

在Java中将HashMap.toString()转换回HashMap

我在Java中放了一个键值对,HashMapString使用该toString()方法将其转换为a .

是否可以将此String表示转换回HashMap对象并使用其对应的键检索值?

谢谢

java hashmap

29
推荐指数
5
解决办法
9万
查看次数

番石榴ImmutableSet:生成器与?

Javadoc中com.google.common.collect.ImmutableSet提示,有两种方法来创建的实例ImmutableSet<E>,从类型的元素E(例如,E e1E e2已经不是一个集合中)(即忽略copyOf从现有集合创建方法):

  1. "of"方法:

    ImmutableSet<E> set = ImmutableSet.of(e1, e2);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 生成器:

    ImmutableSet<E> set = new ImmutableSet.Builder<E>().add(e1).add(e2).build();
    
    Run Code Online (Sandbox Code Playgroud)

两种方法ImmutableSet.Builder#construct最终都使用,但我更喜欢哪一种?

java collections set immutability guava

8
推荐指数
1
解决办法
5793
查看次数

为什么JVM总分配内存大于-Xmx?

JVM选项:

-Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8

正如预期的那样,JVM将为JVM堆分配近20MB的内存.

但请参阅以下GC详细信息:

PSYoungGen总计9216K,使用4612K [0x00000000ff600000,0x0000000100000000,0x0000000100000000]
eden space 8192K,56%使用[0x00000000ff600000,0x00000000ffa812d8,0x00000000ffe00000]
来自空间1024K,0%使用[0x00000000fff00000,0x00000000fff00000,0x0000000100000000]
空间 1024K,0%使用[0x00000000ffe00000 ,0x00000000ffe00000,0x00000000fff00000)
PSOldGen总计10240K,使用8192K [0x00000000fec00000,0x00000000ff600000,0x00000000ff600000]
对象空间10240K,80%使用[0x00000000fec00000,0x00000000ff400020,0x00000000ff600000] PSPermGen总计21248K,使用3033K [0x00000000f9a00000,0x00000000faec0000,0x00000000fec00000]
对象空间21248K,14 %used [0x00000000f9a00000,0x00000000f9cf6708,0x00000000faec0000)

年轻一代的规模与期权的预期一致-Xmn.尺寸为比伊甸园空间生存空间年轻一代如预期的那样的选项-XX:SurvivorRatio=8.似乎JVM总共分配了近40MB的内存,所以很奇怪.为什么JVM总分配内存大于-Xmx

ENV:

操作系统:win7 64位

JDK:构建1.6.0_43-b01 64位

java memory jvm-arguments

6
推荐指数
1
解决办法
802
查看次数

使用 -XX:+PrintHeapAtGC 的 GC 日志中堆内存地址的含义?

Java堆被划分为称为代的区域,例如新一代,可以进一步划分,例如伊甸园空间。使用-XX:+PrintHeapAtGCJVM选项,每个堆区三个存储器地址被打印在GC日志的形式[A, B, C),其中ABC是存储器地址,例如:

eden space 838912K, 100% used [0x000000073ae00000, 0x000000076e140000, 0x000000076e140000)
Run Code Online (Sandbox Code Playgroud)

这些内存地址的含义是什么?

我在网上搜索过,但找不到对 GC 日志这部分的任何解释。

java memory logging garbage-collection jvm

5
推荐指数
1
解决办法
3174
查看次数

何时将内存空间分配给变量?

声明变量时,编译器是否分配4个字节的内存:

int a;
Run Code Online (Sandbox Code Playgroud)

或者在为其分配值时分配内存:

a = 5;
Run Code Online (Sandbox Code Playgroud)

什么时候分配内存?在变量声明或初始化期间?

java

4
推荐指数
1
解决办法
696
查看次数

在 patsy 中从 DesignMatrix 获取名称

from patsy import *
from pandas import *
dta =  DataFrame([["lo", 1],["hi", 2.4],["lo", 1.2],["lo", 1.4],["very_high",1.8]], columns=["carbs", "score"])
dmatrix("carbs + score", dta)
DesignMatrix with shape (5, 4)
Intercept  carbs[T.lo]  carbs[T.very_high]  score
        1            1                   0    1.0
        1            0                   0    2.4
        1            1                   0    1.2
        1            1                   0    1.4
        1            0                   1    1.8
Terms:
'Intercept' (column 0), 'carbs' (columns 1:3), 'score' (column 3)
Run Code Online (Sandbox Code Playgroud)

问题:我是否可以不读取此 DesignMatrix 给出的名称,而不是使用 Designinfo 指定列的“名称”(这基本上使我的代码的可重用性降低),以便稍后将其输入到 DataFrame 中,而无需知道预先确定“参考水平/对照组”水平是多少?

IE。当我做 dmatrix("C(carbs, Treatment(reference='lo')) + Score", dta)

"""
# How can I get …
Run Code Online (Sandbox Code Playgroud)

python python-2.7 pandas statsmodels patsy

2
推荐指数
1
解决办法
1801
查看次数

堆大小大于-Xmx

我使用-Xms256m-Xmx256mJVM选项将初始和最大Java堆大小设置为256MB .GC日志(使用-XX:+PrintHeapAtGC)表明堆大小为251904K(246MB),小于最小堆大小-Xms256m(参见最后一行日志).然而,这是因为所陈述的堆大小是可用的堆大小,不包括不可用 的空间.

当我手动包含空间内存中的不可用时,派生的堆大小为262656K(256.5MB),略大于最大堆大小-Xmx(512KB):

[heap size] = [eden space size] + [from space size] + [to space size] + [OldGen size]
  262656K   =       66048K      +       10752K      +     10752K      + 175104K
Run Code Online (Sandbox Code Playgroud)

为什么堆大小略大于最大堆大小-Xmx

java memory heap garbage-collection jvm

2
推荐指数
1
解决办法
1682
查看次数

patsy 中的 One-hot 编码

对于回归,我通常使用 sklearn 的OneHotEncoder.

我现在正在探索使用 patsy,但它似乎没有提供 One-hot 编码:http : //patsy.readthedocs.io/en/latest/categorical-coding.html

是否可以使用 patsy 指定 One-hot 编码?

python machine-learning scikit-learn patsy

1
推荐指数
1
解决办法
1190
查看次数