集合初识和用法——collection(Java)

发布时间:2026/7/28 15:07:47

集合初识和用法——collection(Java)
Collection接口继承了Iterable接口能够被foreach使用是可迭代的。下面介绍它已实现的子接口在API中它的已知子类和实现的类有很多目前在这里只介绍几个它常用的子接口和collection的用法。List接口有序的collection也称为序列。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引在列表中的位置访问元素提供角标并搜索列表中的元素。列表允许重复的元素、列表是一维数据、允许null提供了特殊的迭代器称为ListIterator除了允许 Iterator 接口提供的正常操作外该迭代器还允许元素插入和替换以及双向访问。还提供了一个方法来获取从列表中指定位置开始的列表迭代器。Set接口一个不包含重复元素的 collection、无序、没有角标、某些 set 实现对其所包含的元素有所限制。例如某些实现禁止 null 元素而某些则对其元素的类型所有限制。Queue接口在处理元素前用于保存元素的 collection。除了基本的collection操作外队列还提供其他的插入、提取和检查操作。每个方法都存在两种形式一种抛出异常操作失败时另一种返回一个特殊值null 或 false具体取决于操作。插入操作的后一种形式是用于专门为有容量限制的 Queue 实现设计的在大多数实现中插入操作不会失败。队列通常但并非一定以 FIFO先进先出的方式排序各个元素。不过优先级队列和 LIFO 队列或堆栈例外前者根据提供的比较器或元素的自然顺序对元素进行排序后者按 LIFO后进先出的方式对元素进行排序。无论使用哪种排序方式队列的头都是调用remove()或poll()所移除的元素。在 FIFO 队列中所有的新元素都插入队列的末尾。其他种类的队列可能使用不同的元素放置规则。每个 Queue 实现必须指定其顺序属性。Queue 实现通常不允许插入 null 元素尽管某些实现如LinkedList并不禁止插入 null。即使在允许 null 的实现中也不应该将 null 插入到 Queue 中因为 null 也用作 poll 方法的一个特殊返回值表明队列不包含元素。Deque接口一个线性 collection支持在两端插入和移除元素。名称deque是“double ended queue双端队列”的缩写大多数 Deque 实现对于它们能够包含的元素数没有固定限制但此接口既支持有容量限制的双端队列也支持没有固定大小限制的双端队列。此接口扩展了Quene接口。在将双端队列用作队列时将得到 FIFO先进先出行为。将元素添加到双端队列的末尾从双端队列的开头移除元素。从 Queue 接口继承的方法完全等效于Deque 方法。虽然 Deque 实现没有严格要求禁止插入 null 元素但建议最好这样做。建议任何事实上允许 null 元素的 Deque 实现用户最好不要利用插入 null 的功能。这是因为各种方法会将 null 用作特殊的返回值来指示双端队列为空。collection的方法collection方法的测试和使用示例import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class Main { public static void main(String[] args) { //E泛型表示该集合存储的是什么类型的元素 //collection是接口不能创建对象只能创建其子类的对象然后定义引用指向子类的对象 CollectionInteger collnew ArrayListInteger(); //ArrayList是collection接口的子类所以可以创建一个该类的对象父类引用指向它 for(int i1;i10;i){ coll.add(i); //add方法添加单个元素 } System.out.println(coll.toString()); // 打印结果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]按顺序输出 //再创建一个集合 CollectionInteger coll2new ArrayListInteger(); for(int i11;i20;i){ coll2.add(i); } System.out.println(coll2.toString()); //打印coll2的结果 [11, 12, 13, 14, 15, 16, 17, 18, 19, 20] coll.addAll(coll2); //addAll方法将coll2中的集合全部添加到coll集合中 System.out.println(coll); //打印结果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] //contains方法判断该集合中是否包含某个元素 System.out.println(coll.contains(100)); //结果 false System.out.println(coll.contains(10)); //结果 true //remove方法移出某集合中的某个元素返回的类型是Boolean类型 System.out.println(coll2.remove(11)); //结果 true System.out.println(coll2.remove(100)); // 结果 false //测试添加的位置在末尾添加不具有自动排序的功能 coll2.add(66); coll2.add(66); System.out.println(coll2); //结果 [12, 13, 14, 15, 16, 17, 18, 19, 20, 66, 1] //containsAll方法判断该集合是否包含另一个集合返回类型是Boolean类型 System.out.println(coll.containsAll(coll2)); //结果 false //equals方法比较两个对象的地址是否相同返回类型是Boolean类型 System.out.println(coll.equals(coll2)); //结果 false //isEmpty方法是判空操作判断该集合是否是一个空集合返回类型仍是Boolean类型 System.out.println(coll.isEmpty()); //结果 false //size方法获得的是集合的长度返回类型为int类型。就如获取数组的长度调用的是length属性获取字符串的长度调用的是length方法 System.out.println(coll.size()); //结果 20 //retainAll保留两个集合共有的元素也就是求交集 coll.retainAll(coll2); System.out.println(coll); //结果 [1, 12, 13, 14, 15, 16, 17, 18, 19, 20] //遍历集合的方法之一 foreach for(Integer number:coll){ System.out.println(number); } System.out.println(); //遍历集合的方法之二 迭代器Iterator IteratorInteger iteratorcoll.iterator(); /* 迭代器是集合中内置的一个对象该对象主要用来访问集合当前状态下的元素 * hasNext() 是否有下一个 * next() 取下一个 * 这两个方法是IteratorE中的方法collection中并没有 * */ while(iterator.hasNext()){ //从头之前开始遍历如果该集合的下一个元素存在 System.out.println(iterator.next()); //则取下一个并打印 } coll.clear(); //清除该集合对象中所有的元素 System.out.println(coll); //结果 [] } }

相关新闻

Windows 10运行Android应用完整指南:WSA-Windows-10逆向移植项目详解

Windows 10运行Android应用完整指南:WSA-Windows-10逆向移植项目详解

2026/7/28 15:07:47

Windows 10运行Android应用完整指南:WSA-Windows-10逆向移植项目详解 【免费下载链接】WSA-Windows-10 This is a backport of Windows Subsystem for Android to Windows 10. 项目地址: https://gitcode.com/gh_mirrors/ws/WSA-Windows-10 还在为Windows 1…

构建跨平台Nintendo Switch模拟器的技术架构解析

构建跨平台Nintendo Switch模拟器的技术架构解析

2026/7/28 15:07:47

构建跨平台Nintendo Switch模拟器的技术架构解析 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是当前最先进的Nintendo Switch开源模拟器项目,采用C编写并支持Windows、Linux和Android三大平台。…

C++ 函数重载详解:从原理到实践,彻底分清重载与重写

C++ 函数重载详解:从原理到实践,彻底分清重载与重写

2026/7/28 14:57:46

C 函数重载详解:从原理到实践,彻底分清重载与重写一、引言:同名不同参的魔法在 C 中,函数重载(Function Overloading)允许在同一个作用域内定义多个同名但参数列表不同的函数。这一特性让接口设计更加直观和统一——开发者可以用同…

彩笔运维勇闯机器学习--拟合

彩笔运维勇闯机器学习--拟合

2026/7/28 17:07:56

彩笔运维勇闯机器学习–拟合 前言:从运维到机器学习的奇幻旅程作为一名资深的“彩笔运维”,我每天的工作就是盯着服务器监控面板,处理报警、重启服务、排查网络问题。直到有一天,老板扔给我一堆历史流量数据,说&#x…

解析请求体内容(如 JSON、表单数据、XML 等) 将原始数据转换为 Python 数据结构 使转换后的数据可在 request. ...

解析请求体内容(如 JSON、表单数据、XML 等) 将原始数据转换为 Python 数据结构 使转换后的数据可在 request. ...

2026/7/28 17:07:56

解析请求体内容:从原始数据到 Python 数据结构的完整指南 在 Web 开发中,客户端向服务器发送请求时,常常需要携带各种类型的数据,如 JSON、表单数据、XML 等。服务器端需要将这些原始数据解析为 Python 可以处理的数据结构&#x…

分布式系统业务幂等性设计与实践指南

分布式系统业务幂等性设计与实践指南

2026/7/28 17:07:56

1. 业务幂等性技术架构体系概述 在分布式系统设计中,业务幂等性是一个至关重要的技术概念。简单来说,就是无论操作执行一次还是多次,最终的系统状态都保持一致。想象一下银行转账场景:如果因为网络抖动导致重复提交了转账请求&…

通过对云基座和离线基座的对比,帮助开发者理解如何在不同场景下选择合适的打包方案。 什么是“基座” 在 UniApp 中,基座(也称“ ...

通过对云基座和离线基座的对比,帮助开发者理解如何在不同场景下选择合适的打包方案。 什么是“基座” 在 UniApp 中,基座(也称“ ...

2026/7/28 17:07:56

云基座 vs 离线基座:UniApp 打包方案深度对比与实战选择 什么是“基座”?UniApp 中的核心概念在 UniApp 开发中,“基座”(Base)是一个容易被忽视但至关重要的概念。简单来说,基座是 UniApp 应用运行和打包的…

docker基础大全总结

docker基础大全总结

2026/7/28 17:07:56

docker大图Docker的安装和使用-centos7 最新的 Docker 支持情况,官方文档在这里: https://docs.docker.com/install/Docker 对于内核支持的功能,即内核的配置选项也有一定的要求(比如必须开启 Cgroup 和 Namespace 相关选项,以及其…

PHP . vs PHP . 开发者完整对比指南

PHP . vs PHP . 开发者完整对比指南

2026/7/28 16:57:52

PHP . vs PHP . 开发者完整对比指南 引言在 PHP 开发中,.(点号)是最常用的符号之一,但它可以代表多种不同的概念:字符串连接运算符、对象方法调用(->)、命名空间分隔符(\&#xf…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/28 13:30:18

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/28 16:04:36

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/28 16:04:35

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

零基础搭建桌面智能体,OpenClaw 2.7.9 分步实操,避开绝大多数部署陷阱

2026/7/28 0:06:55

📌 一、工具核心优势盘点 数据本地存储,安全系数高所有操作日志、文档资料均保存在本机,不会上传至云端,能够有效保护企业文件与个人隐私,规避数据泄露风险。 上手简单,零编程门槛采用全图形化可视化界面&…

计算机毕业设计之基于springboot的购物平台设计与实现

计算机毕业设计之基于springboot的购物平台设计与实现

2026/7/28 0:06:55

由于移动应用技术的持续性的快速发展,现实生活中人们大多数都是通过移动手机、电脑等智能设备来完成生活中的事务。因此,许多的人工传统行业也开始与互联网结合,不再一味的依靠人工手动,努力打造半自动数字化甚至是全自动数字化模…

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

豆包AI绘图提示词失效真相:NLP模型层token截断机制首次披露,3招绕过字数限制

2026/7/28 0:06:55

更多请点击: https://codechina.net 第一章:豆包AI绘图提示词失效现象全景扫描 近期大量用户反馈,豆包(Doubao)AI绘图功能对常规提示词(Prompt)响应异常:语义明确的指令被忽略、中英…