Collection 和 Collections 的区别与用法

Collection 和 Collections 的区别与用法

  • 1、Collection 接口
    • 1.1 主要特点
    • 1.2 常见方法
  • 2、 Collections 工具类
    • 2.1 主要特点
    • 2.2 常见方法
  • 3、示例代码
    • 3.1 使用 Collection 接口
    • 3.2 使用 Collections 工具类
  • 4、总结


💖The Begin💖点点关注,收藏不迷路💖

在Java中,CollectionCollections 是两个非常重要的概念,但它们的功能和用途截然不同。尽管它们的名字相似,但它们的角色和用法却大相径庭。下面,我们将详细探讨这两个概念的区别和用法。

1、Collection 接口

Collection 是Java集合框架中的一个根接口。它定义了所有集合都应该有的基本操作,如添加、删除、检查元素是否存在等。Collection 接口并不直接用于实例化对象,而是由其子接口(如 ListSetQueue)或实现类(如 ArrayListLinkedListHashSetTreeSet 等)来实现具体的集合功能。

1.1 主要特点

  • 提供了集合的基本操作,如添加、删除、检查元素是否存在等。
  • 不提供元素的顺序保证(除了 List 和它的实现类,如 ArrayListLinkedList)。
  • 允许元素重复(除了 Set 和它的实现类,如 HashSetTreeSet)。

1.2 常见方法

  • boolean add(E e): 添加元素到集合中。
  • boolean remove(Object o): 从集合中移除指定元素。
  • boolean contains(Object o): 检查集合中是否包含指定元素。
  • int size(): 返回集合中元素的数量。
  • Iterator<E> iterator(): 返回此集合的迭代器。

2、 Collections 工具类

Collections 是Java提供的一个工具类,它包含了对集合进行操作的静态方法。这些方法可以对集合进行搜索、排序、线程安全化等操作,而无需修改集合的源代码。

2.1 主要特点

  • 提供了一系列静态方法,用于对集合进行搜索、排序、线程安全化等操作。
  • 不能直接实例化,只能使用其中的静态方法。

2.2 常见方法

  • sort(List<T> list): 对列表进行自然排序。
  • sort(List<T> list, Comparator<? super T> c): 根据指定的比较器对列表进行排序。
  • binarySearch(List<? extends Comparable<? super T>> list, T key): 使用二分查找算法在已排序的列表中搜索指定元素。
  • max(Collection<? extends T> coll): 返回集合中的最大值元素(根据元素的自然顺序或比较器)。
  • synchronizedList(List<T> list): 返回指定列表支持的同步(线程安全)列表。

3、示例代码

3.1 使用 Collection 接口

List<String> list = new ArrayList<>();  list.add("Apple");  list.add("Banana");  list.add("Cherry");  
System.out.println(list.contains("Banana")); // 输出: true

3.2 使用 Collections 工具类

List<String> list = new ArrayList<>();  list.add("Apple");  list.add("Banana");  list.add("Cherry");  Collections.sort(list); // 对列表进行自然排序  
System.out.println(list); // 输出: [Apple, Banana, Cherry]  int index = Collections.binarySearch(list, "Banana"); // 使用二分查找算法搜索元素  
System.out.println(index); // 输出: 1

4、总结

1、Collection 是Java集合框架中的一个根接口,它定义了集合的基本操作,并由其子接口和实现类来实现具体的集合功能。

2、而 Collections 是一个工具类,它提供了一系列静态方法,用于对集合进行搜索、排序、线程安全化等操作,而无需修改集合的源代码。

在这里插入图片描述


💖The End💖点点关注,收藏不迷路💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/42826.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32学习历程(day6)

EXTI外部中断使用教程 首先先看下EXTI的框图 看这个框图就能知道要先初始化GPIO外设 那么和前面一样 1、先RCC使能时钟 2、配置GPIO 选择端口为输入模式&#xff0c; 3、配置AFIO&#xff0c;选择我们用的GPIO连接到后面的EXTI 4、配置EXTI&#xff0c;选择边沿触发方式…

LVS实验

LVS实验 nginx1 RS1 192.168.11.137 nginx2 RS2 192.168.11.138 test4 调度器 ens33 192.168.11.135 ens36 12.0.0.1 test2 客户端 12.0.0.10 一、test4 配置两张网卡地址信息 [roottest4 network-scripts]# cat ifcfg-ens33 TYPEEthernet BOOTPROTOstatic DEFROUTEyes DEVIC…

详解平面DP(上)

前言 其实平面DP和正常的dp没有什么本质上的区别&#xff0c;只不过是在二维的面上进行DP&#xff0c;而且&#xff0c;客观的说&#xff0c;其实和递推没有什么区别&#xff0c;不要把他想的太难了 讲解 本蒻鸡思前想后&#xff0c;好像关于平面DP的理论知识好像没有什么&a…

前后端分离系统

前后端分离是一种现代软件架构模式&#xff0c;特别适用于Web应用开发&#xff0c;它强调将用户界面&#xff08;前端&#xff09;与服务器端应用逻辑&#xff08;后端&#xff09;相分离。两者通过API接口进行数据交互。这种架构模式的主要优势在于提高开发效率、维护性和可扩…

Git命令常规操作

目录 常用操作示意图 文件的状态变化周期 1. 创建文件 2. 修改原有文件 3. 删除原有文件 没有添加到暂存区的数据直接 rm 删除即可&#xff1a; 对于添加到暂存区的数据 文件或目录&#xff1a; 4. 重命名暂存区数据 5. 查看历史记录 6. 还原历史数据 恢复过程的原…

最新深度技术Win7精简版系统:免费下载!

在Win7电脑操作中&#xff0c;用户想要给电脑安装上深度技术Win7精简版系统&#xff0c;但不知道去哪里才能找到该系统版本&#xff1f;接下来系统之家小编给大家带来了深度技术Win7系统精简版本的下载地址&#xff0c;方便大家点击下载安装。系统安装步骤已简化&#xff0c;新…

设计模式8-桥模式

设计模式8-Bridge 桥模式 由来与目的模式定义结构代码推导1. 类和接口的定义2. 平台实现3. 业务抽象4. 使用示例总结1. 类数量过多&#xff0c;复杂度高2. 代码重复3. 不符合单一职责原则4. 缺乏扩展性改进后的设计1. 抽象和实现分离&#xff08;桥接模式&#xff09;2. 抽象类…

学习XDMA—20240709

概览&#xff1a; 在内部&#xff0c;子系统可以配置为实现多达8个独立的物理DMA引擎(最多4个H2C和4个C2H)。这些DMA引擎可以映射到单独的AXI4Stream接口&#xff0c;也可以将共享的AXI4内存映射(MM)接口映射到用户应用程序。在axis4 MM接口上&#xff0c;PCI Express的DMA/桥接…

linux查看目录下的文件夹命令,find 查找某个目录,但是不包括这个目录本身?

linux查看目录下的文件夹命令&#xff0c;find 查找某个目录&#xff0c;但是不包括这个目录本身&#xff1f; Linux中查看目录下的文件夹的命令是使用ls命令。ls命令用于列出指定目录中的文件和文件夹。通过不同的选项可以实现显示详细信息、按照不同的排序方式以及使用不同的…

Profibus转ModbusTCP网关模块实现Profibus_DP向ModbusTCP转换

Profibus和ModbusTCP是工业控制自动化常用的二种通信协议。Profibus是一种串口通信协议&#xff0c;它提供了迅速靠谱的数据传输和各种拓扑结构&#xff0c;如总线和星型构造。Profibus可以和感应器、执行器、PLC等各类设备进行通信。 ModbusTCP是一种基于TCP/IP协议的通信协议…

一次零基础 自“信息收集“到“权限维持“的渗透测试全程详细记录

一、渗透总流程 1.确定目标&#xff1a; 在本靶场中&#xff0c;确定目标就是使用各种扫描工具进行ip扫描&#xff0c;确定目标ip。 2.信息收集&#xff1a; 比如平常挖洞使用fofa&#xff0c;天眼查&#xff0c;ip域名等进行查&#xff0c;在我们这个靶场中比如使用Wappalyz…

基于网络编码的 tcp 变种-tcp/nc

tcp/nc 是指 “tcp with network coding”&#xff0c;是一种结合了网络编码技术的 tcp 变种&#xff0c;网上资源很少&#xff0c;我也不准备多介绍&#xff0c;只介绍它的核心。 传统 tcp 在演进过程中一直搞不定效率问题&#xff0c;网络带宽在增长&#xff0c;cpu 却没有变…

区间贪心

目录 1.贪心算法的思想 2.区间贪心算法常用的一些题目类型 1.选择最多不相交区间问题 P2970 [USACO09DEC] Selfish Grazing S 1.思路分析 2.上代码 2.区间选点问题 P1250 种树 1.题目 2.方法一 1.代码解释 3.方法二 3.区间合并问题 P2434 [SDOI2005] 区间 1. 思路…

Java集合面试题

Java集合框架 1、List、Set、Map的区别2、ArrayList、LinkedList、Vector区别3、为什么数组索引从0开始&#xff0c;而不是从1开始&#xff1f;4、ArrayList底层的实现原理5、红黑树、散列表6、HashMap的底层原理7、HashMap的put方法具体流程8、HashMap的扩容机制9、HashMap是怎…

南方科技大学马永胜教授给年轻人使用AI工具上的建议

摘要 - 1. AI的未来&#xff0c;是机器人和机器人之间的合作&#xff1b; 2. 行业的发展方向是需求决定的&#xff0c;不要做同质化的发展&#xff0c;要做专/精/特/新&#xff1b; 3. 新质生产力 &#xff08; 科学技术革命性突破 生产要素创新型配置 产业深度转型升级&…

java通过poi-tl导出word实战详细步骤

文章目录 与其他模版引擎对比1.引入maven依赖包2.新建Word文档exportWprd.docx模版3.编写导出word接口代码4.导出成果 poi-tl是一个基于Apache POI的Word模板引擎&#xff0c;也是一个免费开源的Java类库&#xff0c;你可以非常方便的加入到你的项目中&#xff0c;并且拥有着让…

Pix4Dmapper:无人机测绘的革命性工具

在现代测绘和地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;Pix4Dmapper无疑是一款革命性的工具。作为一名长期使用这款软件的用户&#xff0c;我深深感受到它在工作中的重要性和便利性。Pix4Dmapper不仅仅是一款软件&#xff0c;更是测绘工作者的得力助手&#xff…

285个地级市出口产品质量及技术复杂度(2011-2021年)

出口产品质量与技术复杂度&#xff1a;衡量国家竞争力的关键指标 出口产品质量是衡量国内企业生产的产品在国际市场上竞争力的重要标准。它不仅要求产品符合国际标准和目标市场的法律法规&#xff0c;而且需要保证产品质量的稳定性和可靠性。而出口技术复杂度则进一步体现了一…

批量下载手机中APP程序中文件

需求 利用 adb pull 下载手机中app的某目录 adb pull 命令本身不支持直接下载整个目录&#xff08;文件夹&#xff09;及其所有子目录和文件作为一个单一的操作。但是&#xff0c;可以通过一些方法来间接实现这一目的。 方法 1. 首先将要下载的目录进行 tar 打包 # 在 And…

【atcoder】习题——位元枚举

题意&#xff1a;求i&M的popcount的和&#xff0c;i属于0……N 主要思路还是变加为乘。 举个例子N22&#xff0c;即10110 假设M的第3位是1&#xff0c;分析N中&#xff1a; 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…