我一直想知道使用列表的实际好处是什么。请注意,我的问题不是“何时使用什么”,而是如果我坚持将地图作为我的主要对象,是否对性能有任何影响
显然,如果我的目标是仅仅研究价值观
在乍一看我的意图不清楚之后更新:我的意思是 如果我只想过滤年龄为> 8000的人的列表? 30,我 会使用一个列表...但我可以使用地图而不是使用它 相反 - 我的问题是 - 会有任何性能障碍吗?
我也会使用List。但是我们是否会得到任何性能提升 - 如果是的话 - 我怎么能亲自看到它。
例如,如果我采取
List <Integer> listOfInt = new ArrayList<>(map.values());
将Map用作我的全局对象并基于它提供列表是有意义的。
我知道在地图中插入或删除的键/值O(1)运行时,但是为什么列表是我所见过的大多数地方的首选。
答案 0 :(得分:4)
我的问题不是“何时使用什么”
但它应该。列表和地图有不同的用途。列表是 - 好 - 没有任何显式键的值列表。列表中的项目由其位置指定。
显然,如果我的目标只是处理价值观,我也会使用List。
是的,这是正确的
但我们是否能获得任何性能提升
请注意。地图不是一个简单的结构。对于地图中的每个项目,创建一个“Entry”对象,其中引用了键和值对象,创建了一个哈希数组等。所以使用map你肯定会使用更多的内存和代码。对于更简单的情况,性能差异可以忽略不计
答案 1 :(得分:1)
这取决于用例。使用您的示例,它可以改变用法,例如,如果您想要访问特定对象。列表的访问时间为O(n)
,而地图的访问时间为O(1)
。
如果您不关心对象的特定检索,可以使用List
。