在 java 中,List 和 Map 在集合中使用。但是我不明白在什么情况下我们应该使用 List,什么时候使用 Map。两者的主要区别是什么?
7 回答
现在是阅读Java 集合教程的好时机——但从根本上说,列表是可以通过索引访问的有序元素序列,而映射通常是从键到值的无序映射。(一些地图保留插入顺序,但这是特定于实现的。)
当你想要一个键/值映射并且你只想要一个元素的集合时,这通常是相当明显的。键是否是值的一部分变得不太清楚,但是您希望能够通过该键有效地获取项目。即使从某种意义上说,您没有单独的键集合,这仍然是地图的一个很好的用例。
还有Set
,它是不同元素的(通常是无序的)集合。
地图接口 地图关心唯一标识符。您将唯一键(ID)映射到特定值,其中键和值当然都是对象。Map 实现允许您执行诸如基于键搜索值、仅请求值的集合或仅请求键的集合之类的操作。与 Set 一样,Map 依赖 equals() 方法来确定两个键是相同还是不同。
List 接口 List 关心索引。List 具有非列表所没有的一件事是一组与索引相关的方法。这些关键方法包括 get(int index)、indexOf(Object o)、add(int index, Object obj) 等。所有三个 List 实现都按索引位置排序——您可以通过在特定索引处设置对象或在不指定位置的情况下添加对象来确定位置,在这种情况下,对象被添加到末尾。
HashList是将对象存储在哈希表和列表中的数据结构。它是哈希图和双向链表的组合。访问会更快。HashMap 是 map 接口的哈希表实现,它与 HashTable 相同,只是它是不同步的并且允许空值。List 是一个有序集合,它允许其中包含空值和重复项。位置访问是可能的。Set 是一个不允许重复的集合,它最多允许一个空元素。和我们的数学集一样。
List - This datastructure is used to contain list of elements.
In case you need list of elements and the list may contain duplicate values,
then you have to use List.
Map - It contains data as key value pair. When you have to store data
in key value pair,so that latter you can retrieve data using the key,
you have to use Map data structure.
列表实现——ArrayList、LinkedList
映射实现——HashMap、TreeMap
相比之下- 如果您想获取页面的所有节点,哈希映射是最快的数据结构HashMap
。ArrayList
节点列表可以在恒定时间 (O(1)) 中获取,而使用列表的时间是 O(n)(n=页数,在排序列表上更快,但永远不会接近 O(1))