关于地图和链接的hashmap的困惑

时间:2015-04-08 10:33:36

标签: java collections linkedhashmap

我对LinkedHashMap感到困惑。 在Set中我们没有任何键值对,所以当我们尝试打印set元素时,我们将不会为我们插入的打印元素保留顺序,意味着不保留顺序,但是当我们是使用LinkedHashSet,这将确保订单将被保留,因为我们已将元素插入到链接的哈希集中,而打印时我们将获得相同的顺序。这很有意义。

但是在Map的情况下,我们只使用键打印值,那么说LinkedHashMap保留顺序的逻辑是什么?我们应该使用key打印值,因此无论键值对在哪里,键都将打印其值。它必须去映射并搜索该密钥,最后打印它的值。

我希望你能得到我的问题..

4 个答案:

答案 0 :(得分:3)

当您迭代地图时,它将在链接的哈希地图中管理您的订单。

并不总是只使用密钥获取值。你需要从地图中获取所有元素,你可能不知道它。例如 - 创建使用地图选择下拉

for (Map.Entry<String, String> entry : map.entrySet())
{
    System.out.println(entry.getKey() + "/" + entry.getValue());
}

答案 1 :(得分:3)

  

那么说链接哈希映射保留顺序

的逻辑是什么

LinkedHashMap保留(默认情况下)键首次插入Map的顺序。您可以使用keySet或使用entrySet对条目迭代密钥,以便按此顺序获取密钥/条目。

答案 2 :(得分:2)

首先,您可以在不使用键的情况下访问map的值,您可以使用values方法。所有这些都取决于场景。

答案 3 :(得分:0)

除了已经提到的方法之外,您还可以使用map.forEach()按插入顺序迭代地图条目。