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

为了解决您对这个问题的最新修改:它不是合同的一部分,实际上LinkedHashMapkeySet()至没有实现,values()而是使用基类的(HashMap)版本。即使基于实现可以看到顺序被保留,但如果您希望应用程序具有可移植性,则不应该依赖该顺序。

以上是 LinkedHashMap的keySet()和values()方法的行为 的全部内容, 来源链接: utcz.com/qa/412907.html

回到顶部