温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Set和List有何区别

发布时间:2026-09-14 12:28:42 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,SetList 都是 Collection 的子接口,但它们在元素顺序、是否允许重复、使用场景等方面有明显区别。


一、核心区别对比

对比点 List Set
是否允许重复元素 ✅ 允许 ❌ 不允许
是否保证顺序 ✅ 保证插入顺序(如 ArrayList、LinkedList) ❌ 不保证(HashSet)
✅ 保证(LinkedHashSet、TreeSet)
是否可通过索引访问 ✅ 可以(get(i)) ❌ 不可以
常见实现类 ArrayList、LinkedList、Vector HashSet、LinkedHashSet、TreeSet
典型用途 有序数据、可重复数据 去重、集合运算

二、List 特点详解

特点

  • 有序(按插入顺序)
  • 可重复
  • 有索引

示例

List<String> list = new ArrayList<>();
list.add("A");
list.add("A");
list.add("B");

System.out.println(list); // [A, A, B]
System.out.println(list.get(0)); // A

常见实现

  • ArrayList:查询快,增删慢
  • LinkedList:增删快,查询慢

三、Set 特点详解

特点

  • 不允许重复
  • 通常无序(HashSet)
  • 没有索引

示例

Set<String> set = new HashSet<>();
set.add("A");
set.add("A");
set.add("B");

System.out.println(set); // [A, B]

常见实现

  • HashSet:最快,无序
  • LinkedHashSet:保持插入顺序
  • TreeSet:自动排序(自然顺序或 Comparator)

四、使用场景对比

用 List 的场景

  • 需要保留重复数据
  • 需要按位置访问元素
  • 例如:订单列表、用户列表

用 Set 的场景

  • 需要自动去重
  • 判断是否存在(contains 很快)
  • 例如:用户 ID 集合、标签集合

五、一句话总结

List 关心“顺序和重复”,Set 关心“唯一性”。

如果你愿意,我也可以帮你从 源码层面(如 HashMap 实现 HashSet)面试角度 进一步讲解。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI