Collection 和 Collections 的区别与用法

news2024/10/2 16:28:28

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.coloradmin.cn/o/1912565.html

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

相关文章

JAVA从入门到精通之入门初阶(一)

1. 认识变量 一、 首先变量名要遵循如下命名规则&#xff1a; 1. 变量名只能由字母、数字和下划线组成 2. 变量名必须以字母或下划线开头 3. 变量名大小写敏感 4. 变量名不能使用关键字&#xff0c;如const、static等 5. 变量名应具有描述性&#xff0c;以便于代码的可读性…

三级_网络技术_12_路由设计技术基础

1.R1、R2是一个自治系统中采用RIP路由协议的两个相邻路由器&#xff0c;R1的路由表如下图(a)所示&#xff0c;当R1收到R2发送的如下图(b)的(V.D)报文后&#xff0c;R1更新的4个路由表项中距离值从上到下依次为0、3、3、4 那么&#xff0c;①②③④可能的取值依次为()。 0、4、…

240709_昇思学习打卡-Day21-文本解码原理--以MindNLP为例

240709_昇思学习打卡-Day21-文本解码原理–以MindNLP为例 今天做根据前文预测下一个单词&#xff0c;仅作简单记录及注释。 一个文本序列的概率分布可以分解为每个词基于其上文的条件概率的乘积 &#x1d44a;_0:初始上下文单词序列&#x1d447;: 时间步当生成EOS标签时&a…

使用OpenCV的absdiff函数报错

1.absdiff用法 absdiff函数用于计算两个输入图像之间每个像素的差异&#xff0c;并返回结果图像。 void cv::absdiff ( InputArray src1,InputArray src2,OutputArray dst ) //eg&#xff1a;比较两图像的差异 /*cv::Mat diff;cv::absdiff(depLeft32, imDepth, diff…

Spring MVC深入理解之源码实现

1、SpringMVC的理解 1&#xff09;谈谈对Spring MVC的了解 MVC 是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;其核心思想是通过将业务逻辑、数据、显示分离来组织代码。 Model&#xff1a;数据模型&#xff0c;JavaBean的类&#xff0c;用来进行数据封装…

CLion学习笔记-cmake编译和多main函数编译

这里就不讲怎么配置clion了 项目名字 pcl_kdtree_search 1.新建一个工程名字自己取&#xff0c;我这里用自己学习pcl的&#xff0c;加一个main函数&#xff0c;这个时候Cmake里边就是这样的。 #声明要求的cmake最低版本 cmake_minimum_required(VERSION 3.19) #声明一个工程…

【每日一练】python基础入门实例

""" 幼儿园加法练习题 题数不限 每满100分奖励10个棒棒糖 要求&#xff1a; 1.使用三目运算符与基础运算的对比 2.随机数字相加 3.调用函数 4.循环执行练习题 5.有计算分数 6.有时间停止休眠 """ #导入随机模块 import random #导入时间模块 imp…

华为乾崑智驾加持:深蓝S07首次亮相

最近&#xff0c;特斯拉FSD即将入华的消息&#xff0c;让智能驾驶成为了汽车行业热议的焦点&#xff0c;而当新能源汽车的代表企业深蓝汽车&#xff0c;与全球领先的华为乾崑智驾强强联手&#xff0c;一场颠覆性的智能出行变革也已蓄势待发。 7月8日&#xff0c;深蓝汽车携其最…

uniapp自动升级

一、创建云服务空间&#xff08;https://unicloud.dcloud.net.cn&#xff09; 云空间用于关联需要版本控制升级的项目&#xff0c;如果已拥有云空间则省略此步骤。 二、搭建 uni升级中心 - 后台管理系统&#xff08;升级中心 uni-upgrade-center - Admin&#xff09; uni-adm…

DDR3 SO-DIMM 内存条硬件总结(一)

最近在使用fpga读写DDR3&#xff0c;板子上的DDR3有两种形式与fpga相连&#xff0c;一种是直接用ddr3内存颗粒&#xff0c;另一种是通过内存条的形式与fpga相连。这里我们正好记录下和ddr3相关的知识&#xff0c;先从DDR3 SO-DIMM 内存条开始。 1.先看内存条的版本 从JEDEC下载…

Elasticsearch:深度学习与机器学习:了解差异

作者&#xff1a;来自 Elastic Elastic Platform Team 近年来&#xff0c;两项突破性技术一直站在创新的最前沿 —— 机器学习 (machine learning - ML) 和深度学习 (deep learning - DL)。人工智能 (AI) 的这些子集远不止是流行语。它们是推动医疗保健、金融等各行业进步的关键…

vue3 antdv Modal通过设置内容里的容器的最小高度,让Modal能够适当的变高一些

1、当收款信息Collapse也折叠的时候&#xff0c;我们会发现Modal的高度也变成了很小。 2、我们希望高度稍微要高一些&#xff0c;这样感觉上面显示的Modal高度太小了&#xff0c;显示下面的效果。 3、初始的时候&#xff0c;想通过class或者style或者wrapClassName来实现&#…

理解局域网技术:从基础到进阶

局域网&#xff08;LAN&#xff09;是在20世纪70年代末发展起来的&#xff0c;起初主要用于连接单位内部的计算机&#xff0c;使它们能够方便地共享各种硬件、软件和数据资源。局域网的主要特点是网络为一个单位所拥有&#xff0c;地理范围和站点数目均有限。 局域网技术在计算…

【排序算法】快速排序(详解+各版本实现)

目录 一.交换排序 1.基本思想 2.冒泡排序 二.快速排序 1.hoare版本 2.挖坑法 3.前后指针版本 4.优化 优化①&#xff1a;三数取中 优化②&#xff1a;小区间优化 5.非递归版本 6.特性总结 ①效率 ②时间复杂度&#xff1a;O(N*logN) ③空间复杂度&#xff1a;O(l…

拓展神经网络八股(入门级)

自制数据集 minst等数据集是别人打包好的&#xff0c;如果是本领域的数据集。自制数据集。 替换 把图片路径和标签文件输入到函数里&#xff0c;并返回输入特征和标签 只需要把图片灰度值数据拼接到特征列表&#xff0c;标签添加到标签列表,提取操作函数如下&#xff1a; def…

STM32快速搭建项目框架

注&#xff1a;编写本博客的原因&#xff0c;学习期间基于复习之前知识点的需要&#xff0c;故撰写本教程&#xff0c;即是复习前面的知识点也是作为博客的补充 1.0 文件夹的创建 创建一个STM32项目为模版工程&#xff0c;问价夹下分别包含4个子文件夹&#xff0c;一个是Librar…

【初阶数据结构】1.算法复杂度

文章目录 1.数据结构前言1.1 数据结构1.2 算法1.3 如何学好数据结构和算法 2.算法效率2.1 复杂度的概念2.2 复杂度的重要性 3.时间复杂度3.1 大O的渐进表示法3.2 时间复杂度计算示例3.2.1 示例13.2.2 示例23.2.3 示例33.2.4 示例43.2.5 示例53.2.6 示例63.2.7 示例7 4.空间复杂…

阻尼振动的可视化 包括源码和推导

阻尼振动的可视化 包括源码和推导 flyfish 牛顿第二定律&#xff08;加速度定律&#xff09; 胡克定律&#xff08;Hooke‘s Law&#xff09; 阻尼振动是指在振动系统中&#xff0c;由于阻力或能量损耗导致振动幅度随时间减小的现象。 左边为无阻尼&#xff0c;右边为有阻尼…

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第57-agent机器人助理自动获取喵星人资讯

【WEB前端2024】3D智体编程&#xff1a;乔布斯3D纪念馆-第57-agent机器人助理自动获取喵星人资讯 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript…

FastReport 指定sql 和修改 数据库连接地址的 工具类 :FastReportHelper

FastReport 指定sql 和修改 数据库连接地址的 工具类 &#xff1a;FastReportHelper 介绍核心代码&#xff1a;完整代码&#xff1a; 介绍 在FastReport中&#xff0c;经常会遇到需要给 sql 加条件的情况&#xff0c;或者给数据库地址做更换。 &#xff08;废话不多说&#x…