Java 集合框架中 List 与 Set 的区别及使用场景

摘要:​ 对比 ArrayList 与 HashSet 的特性,分析在不同业务场景下的选型依据。

正文:

在日常编码中,经常纠结到底该用 List 还是 Set。今天做个简单的梳理。

特性List (ArrayList)Set (HashSet)
有序性有序(按插入顺序)无序
重复性允许重复元素不允许重复元素
null值允许多个 null只允许一个 null
查找效率按索引快 O(1),按对象慢 O(n)查找快 O(1)

场景分析

  • 购物车:商品可能有多个相同的(数量不同),使用 List
  • 抽奖黑名单:需要去重,且只关心是否存在,使用 HashSet
  • 历史搜索记录:需要去重且保留最近的顺序,可以考虑 LinkedHashSet

思考:数据结构的选型直接影响程序的性能和逻辑清晰度,不能一概而论。

类似文章