考虑我创建一个LinkedHashMap,如下所示:
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
当我打电话keySet()
给我时,有没有给我订购一套?如果我打电话给我values()
,这些也是吗?
编辑
很抱歉,是有序的,没有排序。
首先LinkedHashMap
是 有序 但没有 排序 。TreeMap
被 排序 (并因此 有序 以及)。
这就是说,你不能指望的输出keySet()
,并values()
进行排序。实际上,JavaDoc说
与订单无关
(事实证明,顺序 是
:由JavaDoc的保证是保证键和值从一个LinkedHashMap的对象返回的顺序?这些集合的,但看他们执行应遵循基本的顺序)Map
。
为了解决您对这个问题的最新修改:它不是合同的一部分,实际上LinkedHashMap
甚keySet()
至没有实现,values()
而是使用基类的(HashMap
)版本。即使基于实现可以看到顺序被保留,但如果您希望应用程序具有可移植性,则不应该依赖该顺序。
问题内容: 和遍历函数之间是否有性能差异? 问题答案: 我认为,由于其高级实现,遍历必须更快 这就是为什么: 让我们逐步执行。 该实施是这样的: 在 从扩展和继承相同的实现。 两者的实现方式不同。 因为它从 但是从 因此, 差异 本质上可以归结为实施。 因为它只是调用e.after,其中e是,但是对于遍历数组以查找下一个下一个要涉及一些工作。 UPDATE :用于在 Entry []不是连续的存储
问题内容: Java 5 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/SortedMap.html Java 6 https://docs.oracle.com/javase/6/docs/api/java/util/SortedMap.html 如您所见,从Java 6开始,这三个api被覆盖。谁能告诉我进行此更改的目的是什么?
} 如果您可以在上面的示例中看到,我显式地使hashcode()在所有情况下都返回1,以检查当hashmap中key.hashcode()发生冲突时会发生什么。发生什么,为这些Map维护一个链表。条目对象,例如 1(key.hashcode())将链接到 (据我所知,假值是在真值之后输入的)。 但是当我做keySet()时,true先返回,然后false,而不是false先返回。 所以,我在这里假
本文向大家介绍Java WeakHashMap keySet()方法与示例,包括了Java WeakHashMap keySet()方法与示例的使用技巧和注意事项,需要的朋友参考一下 WeakHashMap类方法 keySet()方法在java.util包中可用。 keySet()方法用于检索此映射中存在的所有键,以在集合中进行查看。 keySet()方法是一种非静态方法,只能通过类对象访问,如果
本文向大家介绍Java EnumMap keySet()方法与示例,包括了Java EnumMap keySet()方法与示例的使用技巧和注意事项,需要的朋友参考一下 EnumMap类方法 keySet()方法在java.util包中可用。 keySet()方法用于获取此枚举映射中存在的所有键的集合视图。 keySet()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名访问该方法,则会收
HashMap中keySet()、values(),不遍历只打印,键值对不对应? 输出的结果是,结果看是对应的 gpt给出的解答是 在这个输出中,键和值似乎顺序匹配,但这仅仅是巧合。HashMap 的内部结构决定了其遍历顺序是不可预测的。虽然目前表现正常,但在某些情况下(例如,插入数据顺序不同、哈希冲突、重新哈希等情况下),keySet() 和 values() 的顺序可能不会对应。 求大佬解答,