LinkedHashMap的keySet()和values()方法的行为
考虑我创建一个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
)版本。即使基于实现可以看到顺序被保留,但如果您希望应用程序具有可移植性,则不应该依赖该顺序。
以上是 LinkedHashMap的keySet()和values()方法的行为 的全部内容, 来源链接: utcz.com/qa/412907.html