各们大哥们,有一问题,想要求教:当HashMap如果用int当key的话用for each语句打出所有元素时就是有序的,如果用别的类型是乱序的!
我也知道光用System.out.println打也是有序的,可是为什么for each就是行呢?难道是for each是随机遍历?那用int做key又怎么解释呢?
我也知道光用System.out.println打也是有序的,可是为什么for each就是行呢?难道是for each是随机遍历?那用int做key又怎么解释呢?
如果想要排序的Map,可以用SortedMap。
对于int为key,hashCode即为key本身。
貌似就出现这种情况了。
其实即使用int做key,也未必就是按顺序的
.测试代码如下import java.util.Arrays;
import java.util.HashMap;public class Test {
private HashMap<Integer, Integer> map = new HashMap<Integer, Integer>(16); private void add(int i) {
map.put(i, i);
} private void print() {
System.out.println(Arrays.toString(map.values().toArray()));
} /**
* @param args
*/
public static void main(String[] args) {
Test t = new Test();
for(int i=0;i<10;i++)
t.add(i);
t.print();//输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Test t2 = new Test();
t2.add(12);
t2.add(13);
t2.add(16);
t2.add(40);
t2.print();//输出 [16, 40, 12, 13]
}
}