最佳Java数据结构:地图或列表?

时间:2015-01-05 23:10:42

标签: java list hashmap comparator

我需要洞察一个基本的窘境:列表或地图?

我有两个与键(字符串)对应的数字字段。我需要传递大量这些记录。我可以使用键上的Comparator创建所有三个对象并列出它们,或者我可以在键上创建两个字段的对象并哈希(可能是LinkedHashMap)。任何人都可以指出每个选项的优缺点吗?

3 个答案:

答案 0 :(得分:2)

如果您不关心查找条目 而您只关心内存消耗,请使用List。有关各种数据结构的内存消耗的信息,请参阅https://code.google.com/p/memory-measurer/wiki/ElementCostInDataStructures

如果您需要从连续整数索引的某个特定键进行有效查找,请使用Map

答案 1 :(得分:1)

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

  

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

     

Java list:有序集合(也称为序列)。该接口的用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。

     

不同之处在于它们是不同的。 Map是键/值的映射,是项列表的列表。

https://stackoverflow.com/a/3770635/1146562

答案 2 :(得分:0)

这实际上取决于您想要如何检索记录。

如果您需要相对随机访问,Map结构所需的额外内存开销将允许您进行恒定时间访问,而不受插入顺序的影响。

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

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