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

Java使用Collections集合工具类

1、Collections 集合工具类

Java 中的 Collections 是一个非常有用的工具类,它提供了许多静态方法来操作或返回集合。这个类位于 java.util 包中,主要包含对集合进行操作的方法,比如排序、搜索、线程安全化等。

Java集合工具类的使用:

《Java使用Collections集合工具类》

《Java使用CollectionUtils集合工具类》

Java中 的 Collections 工具类提供了丰富的静态方法来操作集合,主要功能可分为以下几类:

方法说明
一、排序操作
sort(List<T> list)对 List 进行自然排序(元素需实现 Comparable 接口)。
sort(List<T> list, Comparator<? super T> c)使用自定义比较器排序
reverse(List<?> list)反转 List 元素顺序。
shuffle(List<?> list)随机打乱 List 元素顺序。
swap(List<?> list, int i, int j)交换指定位置元素。
二、查找与统计
max(Collection<? extends T> coll)返回集合最大值。
min(Collection<? extends T> coll)返回集合最小值。
frequency(Collection<?> c, Object o)统计元素出现次数。
binarySearch(List<? extends Comparable<? super T>> list, T key)二分查找已排序列表。
三、新增与修改
addAll(Collection<? super T> c, T... elements)批量添加元素。
replaceAll(List<T> list, T oldVal, T newVal)替换所有匹配元素。
fill(List<? super T> list, T obj)用指定元素填充列表。
copy(List<? super T> dest, List<? extends T> src)列表复制。
四、不可变集合
unmodifiableCollection(Collection<? extends T> c)返回不可修改集合视图。
unmodifiableList(List<? extends T> list)返回不可修改 List 视图。
unmodifiableSet(Set<? extends T> s)返回不可修改 Set 视图。
unmodifiableMap(Map<? extends K,? extends V> m)返回不可修改 Map 视图。
五、同步控制
synchronizedCollection(Collection<T> c)返回线程安全集合。
synchronizedList(List<T> list)返回线程安全 List。
synchronizedSet(Set<T> s)返回线程安全 Set。
synchronizedMap(Map<K,V> m)返回线程安全 Map。
六、特殊集合
emptyList()、emptySet()、emptyMap()返回空集合不可变实例。
singletonList(T o)、singletonSet(T o)、singletonMap(K k, V v)返回单元素不可变集合。
nCopies(int n, T o)返回包含 n 个相同元素的不可变 List。
checkedCollection(Collection<E> c, Class<E> type)返回类型安全集合视图。
七、其他方法
disjoint(Collection<?> c1, Collection<?> c2)判断两集合是否无交集。
indexOfSubList(List<?> source, List<?> target)返回子列表首次出现位置。
lastIndexOfSubList(List<?> source, List<?> target)返回子列表最后出现位置。
rotate(List<?> list, int distance)旋转列表元素。

2、 Collections 方法的使用

Collections 类的方法都是静态的,使用时直接通过类名调用,如 Collections.max(list)。这些方法大大简化了集合操作,特别是对 List 的常见处理。 

【示例】使用 Collections 工具类提供的方法,模拟抽奖活动。

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;/*** 抽奖活动* @author pan_junbiao**/
public class CollectionsTest
{public static void main(String[] args){// 创建集合列表(奖池)List<Integer> jackpot = new ArrayList<>();// 奖池添加数据Collections.addAll(jackpot, 25, 100, 5, 60, 888, 90);System.out.println("奖池中的金额:" + jackpot);// 统计Integer maxPrize = Collections.max(jackpot);Integer minPrize = Collections.min(jackpot);System.out.println("奖池中的最大金额:" + maxPrize);System.out.println("奖池中的最小金额:" + minPrize);// 随机打乱奖池顺序Collections.shuffle(jackpot);System.out.println("抽奖结果:" + jackpot);}
}

执行结果:

 3、Collections 的排序方法

Collections 类的 sort() 方法、reverse()方法说明:

Collections.sort()方法:自然排序‌:对 List 集合中的元素进行升序排列,要求元素必须实现 Comparable 接口(如String、Integer等已默认实现)。

Collections.reverse()方法:反转 List 集合中元素的顺序,不依赖元素是否可比较。

Collections 类提供了两种 sort() 排序方法,分别如下:

(1)sort() 排序方法一:

public static <T extends Comparable<? super T>> void sort(List<T> list) 
{list.sort(null);
}

(2)sort() 排序方法二:

public static <T> void sort(List<T> list, Comparator<? super T> c) {list.sort(c);
}

该方法中指定比较方式 Comparator<? super T> c,即 c 必须实现 Comparator<? super T> 接口,重写 compareTo() 方法指定比较项目。比较项目在类外指定,比较灵活。

【示例】使用 Collections 类的 sort() 方法、reverse()方法,实现对 List 列表进行排序与倒序。

/*** 使用 Collections 类的 sort() 方法、reverse()方法,* 实现对 List 列表进行排序与倒序。* @author pan_junbiao*/
@Test
public void testCollectionsSort()
{//创建列表(故意打乱顺序)List<String> userList = new ArrayList<>();userList.add("pan_junbiao的博客_03");userList.add("pan_junbiao的博客_01");userList.add("pan_junbiao的博客_04");userList.add("pan_junbiao的博客_02");//执行排序方法(正序排序)Collections.sort(userList);System.out.println("正序排序:");userList.stream().forEach(System.out::println);//执行排序方法(倒序排序)Collections.reverse(userList);System.out.println("\n倒序排序:");userList.stream().forEach(System.out::println);
}

执行结果:

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

相关文章:

  • DAY 33 简单的神经网络
  • 软件设计师“面向对象设计”真题考点分析——求三连
  • 深入剖析 Doris 倒排索引(上):原理与应用全解析​
  • 腾讯2025年校招笔试真题手撕(三)
  • 嵌入式学习笔记 - 关于ARM编辑器compiler version 5 and compiler version 6
  • 软考高项考前48小时冲刺:核心考点记忆 + 错题复盘 + 3 科重点
  • 养生指南:五维提升健康品质
  • 基于cornerstone3D的dicom影像浏览器 第二十一章 显示DICOM TAGS
  • Paimon和Hive相集成
  • Java基础 Day18
  • Redis 是否适合像 MySQL 一样当数据库使用?
  • 单一职责原则 (Single Responsibility Principle, SRP)
  • html主题切换小demo
  • Oracle 中 SHRINK 与 MOVE 操作的比较
  • NR 通讯的整体架构
  • PyTorch可视化工具——使用Visdom进行深度学习可视化
  • Jetson:aarch64平台编译onnxruntime使用GPU
  • 【GESP】C++三级真题 luogu-B4038 [GESP202409 三级] 平衡序列
  • Flask 路由跳转机制:url_for生成动态URL、redirect页面重定向
  • 基于 ZU49DR FPGA 的无线电射频数据采样转换开发平台核心板
  • Docker-Mysql
  • LLaMA-Factory微调LLM-Research/Llama-3.2-3B-Instruct模型
  • 基于多目标优化的样本调度适应度函数设计
  • 7.1.查找的基本概念
  • 高等数学-无穷级数
  • Unity飞机大战-射击类游戏3D虚拟
  • Athena 执行引擎:在线服务计算的效率王者
  • pandas :从入门到进阶的系统实践笔记
  • 错误: gdalbuildvrt 命令未找到————的问题
  • 数字孪生驱动的离散制造智能升级:架构设计与工程实践