我最初使用的代码在某些地方为包含 16 个或更多元素的任何 HashMap 返回了 NullPointerException:
for(Entry<Integer, String> e : myHashMap.entrySet()){
System.out.println(e.getKey() + ": "+e.getValue());
}
我现在使用的代码适用于同一个 HashMap,无论大小如何:
int i = 0; //variable to show the index
int c = 0; //variable to count the number items found
while(c < myHashMap.size()){
if(myHashMap.containsKey(i)){ //if the HashMap contains the key i
System.out.println(i + ": "+myHashMap.get(i)); //Print found item
c++; //increment up to count the number of objects found
}
i++; //increment to iterate to the next key
}
两者有什么区别?为什么第一个迭代空值?而且,更重要的是,如果有 16 个或更多项目,为什么第一个会乱序迭代?(即:12,13,17,15,16,19,18 而不是第二个中整齐的 12,13,14,15,16,17,18,19)
我想我才刚刚开始接触 java 的表面,所以我想了解为什么它是这样设计的。欢迎任何关于这类事情的书籍推荐。