Java 列表和地图有什么不同?

Java 列表和地图有什么不同?,java,Java,在java中,列表和映射在集合中使用。但我不明白在什么情况下我们应该使用列表,什么时候使用地图。它们之间的主要区别是什么?现在是阅读的好时机,但从根本上说,列表是一个有序的元素序列,可以通过索引访问,而映射通常是从键到值的无序映射。(有些贴图保留插入顺序,但这是特定于实现的。) 当您想要一个键/值映射并且只想要一个元素集合时,这通常是相当明显的。如果键是值的一部分,则不太清楚,但您希望能够通过该键高效地获取项。对于地图来说,这仍然是一个很好的用例,即使在某些意义上,您没有单独的键集合 还有Set

在java中,列表和映射在集合中使用。但我不明白在什么情况下我们应该使用列表,什么时候使用地图。它们之间的主要区别是什么?

现在是阅读的好时机,但从根本上说,列表是一个有序的元素序列,可以通过索引访问,而映射通常是从键到值的无序映射。(有些贴图保留插入顺序,但这是特定于实现的。)

当您想要一个键/值映射并且只想要一个元素集合时,这通常是相当明显的。如果键是值的一部分,则不太清楚,但您希望能够通过该键高效地获取项。对于地图来说,这仍然是一个很好的用例,即使在某些意义上,您没有单独的键集合

还有
Set
,它是一个(通常是无序的)不同元素的集合。

用于
Key:Value
对类型的数据。例如,如果您想将学生学籍号映射到他们的姓名

用于允许重复的元素的简单有序集合。
例如,表示学生姓名列表。

list
只是一个有序集合(序列)。选中此项。您可以通过元素的整数索引(列表中的位置)访问元素,并在列表中搜索元素。 列表还允许重复元素和多个空元素

Map
是将值映射到键的对象。看看这个。地图不能包含重复的键;每个键最多可以映射到一个值

地图界面 地图关心唯一标识符。将唯一键(ID)映射到特定的 值,其中键和值当然都是对象。 地图实现允许您执行搜索地图之类的操作 基于键的值,请求仅包含这些值的集合,或请求集合 只有钥匙。与集合一样,映射依赖于equals()方法来确定 两个键相同或不同

列表接口 列表关心索引。列表中有一件事是非列表中没有的 是一组与索引相关的方法。这些关键方法包括 get(int-index)、indexOf(Object o)、add(int-index、Object-obj)等等 在…上所有三个列表实现都是按索引位置排序的,即 您可以通过在特定索引处设置对象或添加对象来确定
指定位置,在这种情况下,对象将添加到端点

列表是一个链表,其中每个对象都通过指针连接到下一个对象。将新对象插入列表所需的时间为O(1),但对其执行的其余操作需要更长的时间

它的好处是,它占用的内存量与您所需的内存量完全相同,甚至字节数也不超过这个数量

映射是一种具有数组的数据结构,数组的每个条目都使用一个
哈希函数(键)
计算,该函数根据键计算位置。几乎地图中的每一个操作都采用O(1)(当有两个相同的键时插入除外),但空间复杂度相当大


要了解更多信息,请尝试wikipedia和HashList。HashList是一种数据结构,将对象存储在哈希表和列表中。它是hashmap和双链接列表的组合。访问速度会更快。HashMap是map接口的哈希表实现,它与哈希表相同,只是它不同步并且允许空值。列表是一个有序集合,它允许空值和重复值。位置访问是可能的。集合是不允许重复的集合,它最多允许一个null元素。和我们的数学集一样

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))

HashMap和LinkedList是映射和列表接口的实现,它们只是这些集合的一种特定情况。@GuillaumePolet,你是对的,但这个想法才是最重要的。理解hashmap和linkedlist之间的差异是理解MAP和LISTWay之间的差异以获得双向飞碟答案的基础!