gpt4 book ai didi

java - 何时在 LinkedList 或 ArrayList 上使用 HashMap,反之亦然

转载 作者:IT老高 更新时间:2023-10-28 13:51:38 26 4
gpt4 key购买 nike

我们不能总是使用 HashMap 的原因是什么,尽管它在添加、删除操作方面比 ArrayList 或 LinkedList 高效得多,而且与元素的数量无关。

我google了一下,找到了一些原因,但是使用HashMap总是有一种解决方法,优势仍然存在。

最佳答案

列表表示元素的顺序排列。Maps 用于表示键/值对的集合。

虽然您可以将 map 用作列表,但这样做有一些明显的缺点。

维护秩序:- 根据定义,列表是有序的。您添加项目,然后您可以按照插入项目的顺序遍历列表。当您将项目添加到 HashMap 时,不能保证按照放入它们的相同顺序检索项目。HashMap 的子类(如 LinkedHashMap)将保持顺序,但一般来说,Map 不能保证顺序。

键/值语义:- 映射的目的是基于可用于稍后检索项目的键来存储项目。只有在键恰好是列表中的位置的有限情况下,才能通过列表实现类似的功能。

代码可读性考虑以下示例。

    // Adding to a List
list.add(myObject); // adds to the end of the list
map.put(myKey, myObject); // sure, you can do this, but what is myKey?
map.put("1", myObject); // you could use the position as a key but why?

// Iterating through the items
for (Object o : myList) // nice and easy
for (Object o : myMap.values()) // more code and the order is not guaranteed

收集功能一些很棒的实用功能可通过 Collections 类用于列表。比如……

    // Randomize the list
Collections.shuffle(myList);

// Sort the list
Collections.sort(myList, myComparator);

希望对你有帮助,

关于java - 何时在 LinkedList 或 ArrayList 上使用 HashMap,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975802/

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