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

Collections操作集合的工具类,可变参数、集合操作的工具类

1、可变参数

假设定义一个方法求和,该方法可以灵活的完成如下需求:

  • 计算1个数据的和
  • 计算2个数据的和
  • 计算3个数据的和
  • 计算n个数据的和,甚至可以支持不接收参数进行调用。 

1.1、可变参数

  • 可变参数用在形参中可以接收多个数据。
  • 可变参数的格式:数据类型...参数名称。
  • 注意:可变参数在方法内部其实就是一个数组。

1.2、可变参数的作用

  • 传输参数非常灵活,方便。可以不传输参数,可以传输1个或者多个,也可以传输一个数组
  • 可变参数在方法内部本质上就是一个数组。

1.3、可变参数的注意事项:

  1. 一个形参列表中可变参数只能有一个
  2. 可变参数必须放在形参列表的最后面
package collection;import java.util.Arrays;public class MethodDemo {public static void main(String[] args) {sum();sum(10);sum(10, 20, 30);sum(new int[]{10, 20, 30, 40, 50});}public static void sum(int... nums) {System.out.println("元素个数:" + nums.length);System.out.println("元素内容:" + Arrays.toString(nums));}
}
D:\Java\jdk-17\bin\java.exe "-javaagent:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\lib\idea_rt.jar=20034:D:\BaiduNetdiskDownload\IntelliJ IDEA 2023.2\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\JavaSenior\out\production\jdk8 collection.MethodDemo
元素个数:0
元素内容:[]
元素个数:1
元素内容:[10]
元素个数:3
元素内容:[10, 20, 30]
元素个数:5
元素内容:[10, 20, 30, 40, 50]Process finished with exit code 0

2、Collections集合工具类 

  • java.util.Collections:
  • 作用:Collections并不属于集合,是用来操作集合的工具类。
  • Collections是一个操作Set、List、Map等集合的工具类
  • Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。
  • Collections类中提供了多个synchronizedXxx()方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题。

2.1、Collections常用的API

方法名称说明
  • public static <T> boolean addAll(Collection<? super T> c,T...elements)
  • 给集合对象批量添加元素
  • public static void shuffle   ( List<?>   list )
  • 打乱List集合元素的顺序
  • 最常见的场景是洗扑克牌模拟洗牌的动作
  • 斗地主洗牌

2.2、Collections排序相关API

  • 使用范围:只能对于List集合的排序。

排序方式1:

方法名称说明
  • public static <T> void sort(List<T>   list)
  • 将集合中元素按照默认规则排序
  • 如果存储的类型是自定义类型,被排序的集合里边存储的元素,(自定义类型)必须实现Comparable接口,重写接口中的方法compareTo定义排序的规则
  • 注意:本方式不可以直接对自定义类型的List集合排序,除非自定义类型实现了比较规则Comparable接口。

排序方式2:

方法名称说明
  • public static <T> void sort(  List<T> list,   Comparator<?  super T>  c)
  • 将集合中元素按照指定规则排序
  • 重写compare方法
  • public static void reverse(List<?> list)
  • 反转指定列表中元素的顺序
  • public static void swap(List<?> list,int i,int j)
  • 将指定list集合中的 i 处元素和 j 处元素进行交换

2.3、Comparator和Comparable的区别

  • Comparable:自己(this)和别人(参数)比较,自己需要实现comparable接口,重写比较的规则CompareTo方法
  • Comparator:相当于找一个第三方的裁判,比较两个
http://www.lryc.cn/news/126626.html

相关文章:

  • Linux Kernel:进程表示
  • 黑马项目一阶段面试58题 苍穹外卖具体技术细节9题
  • SkyEye操作指南:连接TI CCS的IDE调试
  • PINN神经网络源代码解析(pyTorch)
  • ChatGPT​保密吗?它有哪些潜在风险?如何规避?
  • C++中配置OpenCV的教程
  • 收银一体化-亿发2023智慧门店新零售营销策略,实现全渠道运营
  • node.js内置模块fs,path,http使用方法
  • 【git clone error:no matching key exchange method found】
  • 谈谈网络协议的定义、组成和重要性
  • ssh免密登陆报错ERROR: @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  • 【kubernetes】Pod控制器
  • aspose.ocr 的图片识别
  • 安卓纯代码布局开发游戏二:Android Studio开发环境搭建
  • HuggingFace开源的自然语言处理AI工具平台
  • ant-design-vue在ios使用AUpload组件唤起了相机,HTML的 `capture` 属性
  • 力扣75——图深度优先搜索
  • 小程序前台Boot后台校园卡资金管理系统java web学校进销存食堂挂失jsp源代码
  • 数学建模-多元线性回归笔记
  • 云安全攻防(十二)之 手动搭建 K8S 环境搭建
  • Python学习笔记_基础篇(八)_正则表达式
  • 【洛谷 P5736】【深基7.例2】质数筛 题解(判断质数)
  • C语言好题解析(一)
  • uniapp微信小程序区分正式版,开发版,体验版
  • 更多openEuler镜像加入AWS Marketplace!
  • 【BASH】回顾与知识点梳理(二十四)
  • CSRF
  • pyscenic分析:视频教程
  • 可视化绘图技巧100篇进阶篇(九)-三维百分比堆积条形图(3D Stacked Percentage Bar Chart)
  • js实现将文本转PDF格式并下载到本地