最佳Java数据结构:映射还是列表?

最佳Java数据结构:映射还是列表?,java,list,hashmap,comparator,Java,List,Hashmap,Comparator,我需要洞察一个基本的困境:列表还是地图 我有两个数字字段,对应一个键字符串。我需要通过大量的这些记录。我可以在键上用比较器创建所有三个字段的对象并列出它们,也可以创建两个字段的对象并在键上对其进行哈希映射。有人能告诉我每种方法的优缺点吗?这取决于你想如何检索记录 如果您需要相对随机的访问,那么映射结构所需的额外内存开销将允许您具有与插入顺序无关的恒定时间访问 如果您只打算按固定顺序检索记录,那么列表是一个更好的选择,因为它在内存使用方面会更轻 与Java中任一结构的内存占用有关。我发现了一个类似

我需要洞察一个基本的困境:列表还是地图


我有两个数字字段,对应一个键字符串。我需要通过大量的这些记录。我可以在键上用比较器创建所有三个字段的对象并列出它们,也可以创建两个字段的对象并在键上对其进行哈希映射。有人能告诉我每种方法的优缺点吗?

这取决于你想如何检索记录

如果您需要相对随机的访问,那么映射结构所需的额外内存开销将允许您具有与插入顺序无关的恒定时间访问

如果您只打算按固定顺序检索记录,那么列表是一个更好的选择,因为它在内存使用方面会更轻


与Java中任一结构的内存占用有关。

我发现了一个类似的问题,下面是他们接受的答案

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

Java列表:一个有序的集合,也称为序列。此界面的用户可以精确控制每个元素在列表中的插入位置。用户可以通过元素在列表中的整数索引位置访问元素,并在列表中搜索元素

区别在于它们是不同的。映射是键/值的映射,是项列表的列表


如果您根本不关心查找条目,而只关心内存消耗,请使用列表。有关各种数据结构的内存消耗的信息,请参阅


如果需要从非连续整数索引的特定键进行高效查找,请使用映射。

有人能告诉我每个选项的优缺点吗?-->很公平。我应该说明我对存储开销很好奇,不特别关心访问时间,这是我看到的大部分内容。但我会再看一眼。上面的评论清楚地表明提问者已经做出了一些努力。现在,所有非原创的、不有趣的、最重要的非建设性的go-use谷歌评论都被删除了吗?那些决定在没有阅读的情况下投反对票的人会收回他们的反对票吗?可能不会…钥匙怎么分类?基于插入顺序或其他内容,例如字母顺序?在某些情况下按插入顺序排序;可能还有其他形式,比如其中一个字段上的最小最大值。但是排序只需要一次,不需要维护。这个答案对我来说不太重要,因为我建议订购LinkedHashMap。另一方面,复制品是一个很好的观点。很酷的资源。谢谢