在所有能搜索到的资料中说的都是hashmap遍历结果是不按存入顺序取出的,但是我尝试了包括iterator迭代器遍历,增强for遍历, 包括尝试了存入各种数量的key,遍历出来的结果都是有序的,代码如下:
import java.util.HashMap;
import java.util.Map;
public class test1 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 添加元素到Map中
map.put("A", 1);
map.put("B", 3);
map.put("C", 42);
map.put("D", 25);
map.put("E", 26);
map.put("F", 2);
map.put("G", 2);
map.put("H", 27);
map.put("I", 28);
map.put("J", 2);
map.put("K", 2);
map.put("L", 2);
map.put("M", 29);
map.put("N", 20);
map.put("O", 2);
map.put("P", 2);
map.put("Q", 2);
map.put("R", 2);
// 遍历Map并输出结果
for (String key : map.keySet()) {
System.out.print(key + ":" + map.get(key) + ", ");
}
}
}
输出结果是有序的;
A:1, B:3, C:42, D:25, E:26, F:2, G:2, H:27, I:28, J:2, K:2, L:2, M:29, N:20, O:2, P:2, Q:2, R:2,
问了一下chatGPT,它的回答是java8之后hashmap底层会维护一个双向链表 保证了hashmap的有序性,前提是没有发生哈希碰撞.但让他举两个证明输出结果是无序的例子,全是错的
有没有大佬可以写个遍历hashmap结果是无序的代码啊,或者说一下hashmap到底是有序的还是虚无的