当前位置: 首页 > news >正文

集合进阶(Collections Set List)

一、集合体系总览

Java 集合根接口:Collection(单列集合,存一个个对象)两大分支:

  1. List:有序、可重复、有索引
  2. Set:无序、不重复、无索引

工具类:Collections:操作集合的静态工具方法


二、Collection 集合

1. 特点

  • 所有单列集合的根接口
  • 定义了所有单列集合共有的方法
  • 不能直接创建对象,只能使用实现类(ArrayList、HashSet 等)

2. 常用方法(所有 List/Set 都能用)

// 添加元素 collection.add("张三"); // 清空集合 collection.clear(); // 删除指定元素 collection.remove("张三"); // 判断是否包含某个元素 collection.contains("张三"); // 判断是否为空 collection.isEmpty(); // 获取集合大小 collection.size(); // 转成数组 collection.toArray();

3. Collection 遍历方式(3 种)

  1. 迭代器遍历(通用)
Iterator<String> it = list.iterator(); while(it.hasNext()){ String s = it.next(); }
  1. 增强 for 循环(最常用)
for(String s : collection){ System.out.println(s); }
  1. forEach 方法(Lambda)
collection.forEach(s -> System.out.println(s));

三、List 集合(有序、可重复、有索引)

1. 特点

  • 存取有序
  • 元素可重复
  • 有索引,可以通过索引操作

2. 常用实现类

  1. ArrayList:底层数组,查询快、增删慢
  2. LinkedList:底层链表,查询慢、增删快(可做队列、栈)

3. List 特有方法(带索引)

// 在指定索引插入元素 list.add(2, "李四"); // 根据索引删除 list.remove(2); // 修改指定索引元素 list.set(1, "王五"); // 根据索引获取元素 list.get(0);

4. List 遍历方式(4 种)

  1. 普通 for 循环(利用索引)
  2. 迭代器
  3. 增强 for
  4. Lambda forEach

四、Set 集合(无序、不重复、无索引)

1. 特点

  • 存取无序
  • 元素唯一,不能重复
  • 没有索引,不能用普通 for 遍历

2. 常用实现类

  1. HashSet:最常用,底层哈希表,无序、不重复
  2. LinkedHashSet:底层哈希表 + 链表,有序、不重复
  3. TreeSet:底层红黑树,可排序、不重复

3. HashSet 去重原理(面试高频)

  1. 先调用hashCode()计算哈希值
  2. 哈希值相同,再调用equals()比较内容
  3. 都相同 → 判定重复,不存入

注意:自定义对象要存在 HashSet 中,必须重写 hashCode () 和 equals ()

4. TreeSet 排序规则

  • 对元素自动排序
  • 两种排序方式:
    1. 自然排序:元素类实现Comparable接口
    2. 比较器排序:创建集合时传入Comparator

五、Collections 工具类

1. 作用

专门用来操作 Collection 集合的静态工具类

2. 常用方法

// 批量添加多个元素 Collections.addAll(list, "a", "b", "c"); // 打乱顺序(只对 List 有效) Collections.shuffle(list); // 排序(默认升序) Collections.sort(list); // 自定义排序(比较器) Collections.sort(list, (o1, o2) -> o2 - o1); // 获取最大值 Collections.max(list); // 获取最小值 Collections.min(list); // 反转集合 Collections.reverse(list);

六、面试题题总结

  1. List 和 Set 的区别
    • List:有序、可重复、有索引
    • Set:无序、不重复、无索引
  2. ArrayList 和 LinkedList 区别
    • ArrayList:数组,查询快
    • LinkedList:链表,增删快
  3. HashSet 如何保证去重
    • hashCode() + equals()
  4. Collections 和 Collection 的区别
    • Collection:根接口
    • Collections:操作集合的工具类

总结

  1. Collection:单列集合根接口,定义通用方法
  2. List:有序、可重复、有索引(ArrayList/LinkedList)
  3. Set:无序、不重复、无索引(HashSet/LinkedHashSet/TreeSet)
  4. Collections:集合工具类,提供排序、打乱、批量添加等静态方法
http://www.jsqmd.com/news/817876/

相关文章:

  • 2026沅江市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • LLM安全攻防实战:从提示注入到越狱攻击的防御体系构建
  • 虚拟机网络排查实战:宿主机和Ubuntu虚拟机桥接后互相ping不通?看这篇就够了
  • 新手入门,用外卖系统吃透Tomcat与Java Web全流程
  • 2026石家庄市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • NDS中文游戏资源汇总 中文游戏全集+NDS金手指+NDS模拟器
  • 医学图像自监督学习:MIRAM架构解决乳腺病变诊断难题
  • Kubernetes部署实践:从入门到生产级配置
  • 2026南京GEO优化乱象频发:反向甄别优劣+数据化避坑指南(FAQ) - 小艾信息发布
  • 基于Dify与微信机器人构建AI情感陪伴助手:从部署到Prompt工程实战
  • 科研法律PDF智能解析:Siclaw工具原理、应用与优化实践
  • 2026清镇市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • UniApp多端开发实战:一套代码,如何优雅覆盖10+平台?
  • 腾讯云掉队:从中国云市场第二到第五,AI与云服务互为拖累何时突围?
  • 轻量级可编程负载均衡器:从核心原理到自定义策略实践
  • CircuitPython开发故障排查指南:串口无输出、文件系统损坏与设备锁死恢复
  • 在OpenClaw中配置Taotoken实现AI工作流的一键接入
  • 2026庆阳市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 雅思阅读9分攻略:从B站热门视频里,我总结出这套超实用的‘三步定位法’
  • CircuitPython状态灯与安全模式:从硬件密语到文件系统修复全指南
  • 网盘直链下载助手终极指南:告别限速的8大网盘高速下载方案
  • 2026石首市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • 2026云浮市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • ARM架构ERR<n>MISC2/MISC3错误记录寄存器详解
  • PyTorch Geometric实战:手把手教你用MessagePassing基类搭建自己的GNN(附GCNConv完整代码)
  • Mantra Releases:基于Conventional Commits的自动化发布工具实战指南
  • 如何在3分钟内为Windows 11 LTSC系统一键恢复微软商店:完整指南
  • 3.6链队列
  • 2026邛崃市黄金回收白银回收铂金回收店铺哪家好 靠谱门店推荐及联系方式_转自TXT - 盛世金银回收
  • pycatia实现多实体零件几何体拆分的工程实践