Java 初始化哈希映射<;整数,列表<;对象>&燃气轮机;

Java 初始化哈希映射<;整数,列表<;对象>&燃气轮机;,java,Java,我正在尝试填充hashmap的值 HashMap<Integer,List<Human>> hm=new HashMap<>(100); for(int j=0;j<hm.size();j++) { hm.put(j,new ArrayList<>()); } 我得到: java.lang.NullPointerException hm.size()为零-因为你没有在那里放任何东西。 100参数在这里只是“启动容量”的初始化 将

我正在尝试填充hashmap的值

HashMap<Integer,List<Human>> hm=new HashMap<>(100);

for(int j=0;j<hm.size();j++)
{
    hm.put(j,new ArrayList<>());
}
我得到:

java.lang.NullPointerException
hm.size()为零-因为你没有在那里放任何东西。 100参数在这里只是“启动容量”的初始化

将循环更改为
for(int j=0;jhm.size()返回0,因为您尚未在hashmap中添加任何内容。从java站点:

返回此映射中的键值映射数


您使用一些初始大小初始化它,但里面没有值,因此for循环没有任何作用。如果您使用1到100而不是1来调整大小,它将按照您的预期工作。

使用
hm.size()无法获得
100
但是
0
。您无法获得使用该构造函数生成的内容。您已使用该构造函数设置了“InitialCapacity”:

使用指定的初始容量和默认加载因子(0.75)构造空哈希映射

但返回
键值
元素的实际数目

返回此映射中的键值映射数

供您参考:

HashMap的实例有两个影响其性能的参数:初始容量和负载因子。容量是哈希表中的存储桶数,初始容量只是创建哈希表时的容量。负载因子是哈希表在释放容量之前允许达到的满度的度量自动增加。当哈希表中的条目数超过加载因子和当前容量的乘积时,哈希表将重新刷新(即,重建内部数据结构),以便哈希表的存储桶数大约为存储桶数的两倍

相反,只需在循环中设置
100
,即可实例化
列表

Map<Integer,List<Human>> hm = new HashMap<>();
for(int j=0; j < 100; j++){
    hm.put(j,new ArrayList<>());
}
Map hm=newhashmap();
对于(int j=0;j<100;j++){
hm.put(j,newarraylist());
}
或者更好,使用一个常数,比如

final static int NB_LIST = 100;

Map<Integer,List<Human>> hm = new HashMap<>();
for(int j=0; j < NB_LIST; j++){
    hm.put(j,new ArrayList<>());
}
final static int NB_LIST=100;
Map hm=新的HashMap();
对于(int j=0;j
hm.size()
不会返回
100
,但
0
100
是初始容量,而不是当前大小。请参阅和。请记住检查。最好验证最符合您需要的答案,自动将问题标记为“已回答”。
final static int NB_LIST = 100;

Map<Integer,List<Human>> hm = new HashMap<>();
for(int j=0; j < NB_LIST; j++){
    hm.put(j,new ArrayList<>());
}