gpt4 book ai didi

java - HashMap.entrySet()和LinkedHashMap.entrySet()的结果有什么不同,它们的性能相同吗?

转载 作者:行者123 更新时间:2023-11-30 06:06:34 25 4
gpt4 key购买 nike

我知道hashmap(数组+链接)和linkedhashMap(保持放入时的顺序)之间的区别;

我的问题是entrySet和LinkedEntrySet与HashMap和LinkedHashMap具有相同的功能吗?

 Map<String,Integer> hashmap= new HashMap<>();
Map<String,Integer> linkedmap = new LinkedHashMap<>();

Set hashset = hashmap.entrySet();//EntrySet
Set linkedset = linkedmap .entrySet();//LinkedEntrySet

// Here is my test code
@Test
public void mapTest(){
Map<String,Integer> hashMap= new HashMap<>();
Map<String,Integer> linkedHashMap= new LinkedHashMap<>();
hashMap.put("1",1);
hashMap.put("3",3);
hashMap.put("2",2);
hashMap.put("5",5);
hashMap.put("8",8);
hashMap.put("6",6);
hashMap.put("7",7);
hashMap.put("4",4);

linkedHashMap.put("1",1);
linkedHashMap.put("3",3);
linkedHashMap.put("2",2);
linkedHashMap.put("5",5);
linkedHashMap.put("8",8);
linkedHashMap.put("6",6);
linkedHashMap.put("7",7);
linkedHashMap.put("4",4);//LinkedHashMapwill keep the order

Set hashSet = hashMap.entrySet();
Set linkedSet= linkedHashMap.entrySet();//the linkedSetwill keep the order too???
for (Object o : hashSet ) {
System.out.println(o);
}
for (Object o : linkedSet) {
System.out.println(o);
}
}

最佳答案

查看代码 (Java 8),在这两种情况下 entrySet() 返回相应 Map 实现的内部类的实例:

对于LinkedHashMap:

public Set<Map.Entry<K,V>> entrySet() {
Set<Map.Entry<K,V>> es;
return (es = entrySet) == null ? (entrySet = new LinkedEntrySet()) : es;
}

对于HashMap:

public Set<Map.Entry<K,V>> entrySet() {
Set<Map.Entry<K,V>> es;
return (es = entrySet) == null ? (entrySet = new EntrySet()) : es;
}

如您所见,他们既不使用 LinkedHashSet 也不使用 HashSet。它们有特定的 Set 实现。

它们使用特定内部实现的原因是这些 Set 由各自的 Map 支持,因此它们没有自己的存储。

关于java - HashMap.entrySet()和LinkedHashMap.entrySet()的结果有什么不同,它们的性能相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com