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

Java Collection接口解析

Collection接口概述

Collection是Java单列集合的顶层接口,定义了所有单列集合共性的方法。List、Set、Queue等子接口都继承自Collection。它提供了对集合元素的基本操作,如添加、删除、遍历等。

红色为接口,蓝色为实现类。。

List系列集合:添加的元素是有序、可重复、有索引
Set系列集合:添加的元素是无序、不重复、无索引

常用方法分类

Collection接口的方法可分为以下几类:

  • 添加元素:add(), addAll()
  • 删除元素:remove(), removeAll(), clear()
  • 查询元素:contains(), containsAll(), isEmpty(), size()
  • 遍历元素:iterator()
  • 转换操作:toArray()


添加元素示例

add()方法用于向集合中添加单个元素,addAll()用于添加另一个集合的所有元素。

Collection<String> coll = new ArrayList<>();
coll.add("Java");
coll.add("Python");Collection<String> otherColl = new ArrayList<>();
otherColl.add("C++");
otherColl.add("Go");coll.addAll(otherColl);
System.out.println(coll); // 输出: [Java, Python, C++, Go]


删除元素示例

remove()删除指定元素,removeAll()删除与另一集合的交集,clear()清空集合。

Collection<String> coll = new ArrayList<>(Arrays.asList("A", "B", "C", "D"));
coll.remove("B"); // 移除"B"
System.out.println(coll); // 输出: [A, C, D]Collection<String> toRemove = Arrays.asList("C", "D");
coll.removeAll(toRemove); // 移除"C"和"D"
System.out.println(coll); // 输出: [A]coll.clear(); // 清空集合
System.out.println(coll.isEmpty()); // 输出: true


查询元素示例

contains()判断元素是否存在,size()返回集合大小。

Collection<Integer> numbers = new HashSet<>(Arrays.asList(10, 20, 30));
System.out.println(numbers.contains(20)); // 输出: true
System.out.println(numbers.size()); // 输出: 3


遍历集合示例

通过iterator()获取迭代器,或使用增强for循环遍历。

Collection<String> languages = new ArrayList<>(Arrays.asList("Java", "Python", "Ruby"));// 方式1:迭代器
Iterator<String> it = languages.iterator();
while (it.hasNext()) {System.out.println(it.next());
}// 方式2:增强for
for (String lang : languages) {System.out.println(lang);
}


集合与数组转换

toArray()将集合转换为数组,可指定数组类型。

Collection<String> coll = Arrays.asList("Apple", "Banana");
Object[] array1 = coll.toArray(); // 转为Object数组
String[] array2 = coll.toArray(new String[0]); // 转为String数组
System.out.println(Arrays.toString(array2)); // 输出: [Apple, Banana]

实例:

public class A01_CollectionDemo1 {public static void main(String[] args) {
/*public boolean add(E e)             添加public void clear()                 清空public boolean remove(E e)          删除public boolean contains(Object obj) 判断是否包含public boolean isEmpty()            判断是否为空public int size()                   集合长度注意点:Collection是一个接口,我们不能直接创建他的对象。所以,现在我们学习他的方法时,只能创建他实现类的对象。实现类:ArrayList
*///目的:为了学习Collection接口里面的方法//自己在做一些练习的时候,还是按照之前的方式去创建对象。Collection<String> coll = new ArrayList<>();//1.添加元素//细节1:如果我们要往List系列集合中添加数据,那么方法永远返回true,因为List系列的是允许元素重复的。//细节2:如果我们要往Set系列集合中添加数据,如果当前要添加元素不存在,方法返回true,表示添加成功。//                                       如果当前要添加的元素已经存在,方法返回false,表示添加失败。//                                       因为Set系列的集合不允许重复。coll.add("aaa");coll.add("bbb");coll.add("ccc");System.out.println(coll);//2.清空//coll.clear();//3.删除//细节1:因为Collection里面定义的是共性的方法,所以此时不能通过索引进行删除。只能通过元素的对象进行删除。//细节2:方法会有一个布尔类型的返回值,删除成功返回true,删除失败返回false//如果要删除的元素不存在,就会删除失败。System.out.println(coll.remove("aaa"));System.out.println(coll);//4.判断元素是否包含//细节:底层是依赖equals方法进行判断是否存在的。//所以,如果集合中存储的是自定义对象,也想通过contains方法来判断是否包含,那么在javabean类中,一定要重写equals方法。boolean result1 = coll.contains("bbb");System.out.println(result1);//5.判断集合是否为空boolean result2 = coll.isEmpty();System.out.println(result2);//false//6.获取集合的长度coll.add("ddd");int size = coll.size();System.out.println(size);//3}
}

注意事项

  • 部分方法(如add())在不可变集合中会抛出UnsupportedOperationException
  • remove()依赖元素的equals()方法进行匹配
  • 不同实现类(如ArrayList vs HashSet)对相同方法可能有不同性能表现

通过灵活运用Collection接口的方法,可以高效处理各类集合操作需求。

http://www.xdnf.cn/news/13621.html

相关文章:

  • c++算法学习6——迪杰斯特拉算法
  • 用 OpenSSL 库实现 3DES(三重DES)加密
  • CKA考试知识点分享(10)---NetworkPolicy
  • 【Git】TortiseGit设置过滤上传文件
  • 神经网络:深度剖析过拟合、欠拟合及其泛化能力提升策略
  • 【学习笔记】HTTP
  • P2834 纸币问题 3
  • 讲一件Java虚拟线程
  • 小白理财 - 入门第一课
  • 扁平风格职场商务通用PPT模版分享
  • AI支持下的-ArcGIS数据处理、空间分析、可视化及多案例综合应用
  • Java多线程实现之同步方法详解
  • Win10重装系统 (重生篇:我在华强修电脑)
  • 用python玩转大语言模型——从 RNN 到文本生成大语言模型的奇幻之旅
  • SpringBoot学习day2-前后端的交互搭建以及跨域问题、拦截过滤器问题的解决
  • 理解系统交互:UML时序图
  • 驭码CodeRider 2.0 产品体验:在VSCode安装并创建一个雷电小游戏
  • Django项目QQ授权登录报错:redirect uri is illegal(100010) 解决方法
  • 深度学习小项目合集之音频语音识别
  • docker-compose搭建eureka-server和zipkin
  • ubuntu 安装 JDK8
  • 安信可(云知声蜂鸟US516P6)SDK开发学习---log日志打印子系统模块
  • 云原生安全实践:CI/CD流水线集成DAST工具
  • 【PostgreSQL系列】PostgreSQL WAL 目录配置
  • 力扣HOT100之贪心算法:45. 跳跃游戏 II
  • 零基础设计模式——行为型模式 - 备忘录模式
  • 前端实现ios26最新液态玻璃效果!
  • Leetcode-11 2 的幂
  • 前端实战:用 HTML+JS 打造可拖动图像对比滑块,提升视觉交互体
  • Reactive-Resume:重构你的简历编写体验