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.pswp.cn/pingmian/81867.shtml

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

相关文章

Unity基础学习(五)Mono中的重要内容(1)延时函数

目录 一、Mono中的延时函数Invoke 1. Invoke作用&#xff1a;延迟指定时间后执行一次函数。API&#xff1a; 2. InvokeRepeating作用&#xff1a;延迟后开始重复执行函数。API&#xff1a; 3. CancelInvoke作用&#xff1a;停止所有延时函数&#xff0c;或停止指定函数的延时…

180KHz 60V 5A开关电流升压/升降压型DC-DC转换器XL4019升降压芯片

介绍 XL6019是一款专为升压、升降压设计的 单片集成电路&#xff08;升压和降压是由外围电路拓扑确定的&#xff09;&#xff0c;可工作在DC5V到40V输入电 压范围&#xff0c;低纹波&#xff0c;内置功率MOS。XL6019内 置固定频率振荡器与频率补偿电路&#xff0c;简化了电 路…

如何畅通需求收集渠道,获取用户反馈?

要畅通需求收集渠道、有效获取用户反馈&#xff0c;核心在于多样化反馈入口、闭环反馈机制、用户分层管理、反馈数据结构化分析等四个方面。其中&#xff0c;多样化反馈入口至关重要&#xff0c;不同用户有不同的沟通偏好&#xff0c;只有覆盖多个反馈路径&#xff0c;才能捕捉…

Python结合ollama和stramlit开发聊天机器人

Python结合ollama和stramlit开发聊天机器人 一、环境准备1、streamlit安装2、langchain安装3、ollama的安装 二、Ollama平台聊天机器人实现1、需求2、模型调用3、前端实现页面呈现代码实现 三、详细代码地址四、参考资源 一、环境准备 1、streamlit安装 # 通过 pip 安装 pip …

java jdbc执行Oracle sql文件

执行代码 import java.io.FileInputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; import java.sql.Connection; import java.sql.DriverManager;import org.apache.ibatis.jdbc.ScriptRunner;public class ExecSqlFileController {pu…

[Java实战]Spring Boot整合MinIO:分布式文件存储与管理实战(三十)

[Java实战]Spring Boot整合MinIO&#xff1a;分布式文件存储与管理实战&#xff08;三十&#xff09; 一、MinIO简介与核心原理 MinIO 是一款高性能、开源的分布式对象存储系统&#xff0c;兼容 Amazon S3 API&#xff0c;适用于存储图片、视频、日志等非结构化数据。其核心特…

开发指南115-CSS中选择器关系

1、选择后代 可以用选择器1 选择器2&#xff08;中间用空格分隔&#xff09;来表达&#xff0c;也可以在大括号里通过包含关系来表达 举例 .a .b 举例.a { .b{} } 注意css本身并不支持嵌套的写法&#xff0c;是scss等提供的扩展能力。 2、选择直系后代 选择器1 > 选择器2&a…

创建型:抽象工厂模式

目录 1、核心思想 2、实现方式 2.1 模式结构 2.2 实现案例 3、优缺点分析 4、适用场景 1、核心思想 目的&#xff1a;统一管理相关对象的创建&#xff0c;确保产品兼容性。优先用于需要强约束产品兼容性的场景&#xff08;如UI主题、跨平台适配&#xff09; 概念&#…

乘最多水的容器 | 算法 | 给定一个整数数组。有n条垂线。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

在我们日常生活中&#xff0c;蓄水似乎是一个极为朴素的物理行为&#xff1a;两堵墙之间&#xff0c;注入水&#xff0c;看谁能装得更多。可如果换个角度&#xff0c;从算法的视角去看这个问题&#xff0c;它会变得怎样&#xff1f;你是否意识到&#xff0c;这样一个简单的问题…

无人机避障——深蓝学院浙大Ego-Planner规划部分

ESDF-free&#xff1a; 被这种类型的障碍物死死卡住的情况&#xff1a; 在一定范围内建立ESDF&#xff1a; Ego-Planner框架&#xff1a; 找到{p,v} pair&#xff1a; 【注意】&#xff1a;首先根据在障碍物内航迹上的点Q&#xff0c;以及与它相邻但不在障碍物内的两个点&#…

零基础设计模式——大纲汇总

零基础学设计模式 - 大纲 前言 本教程旨在帮助零基础的同学快速入门设计模式&#xff0c;理解其核心思想和应用场景。我们将通过清晰的讲解和简单的示例&#xff0c;逐步引导你掌握常用的设计模式。 第一部分&#xff1a;设计模式入门 什么是设计模式&#xff1f; 设计模式…

leetcode 92. Reverse Linked List II

题目描述 92. Reverse Linked List II 是第206题的进阶版206. Reverse Linked List 思路很简单&#xff0c;但一次性通过还是有点难度的。 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(n…

CUDA的设备,流处理器(Streams),核,线程块(threadblock),线程,网格(‌gridDim),块(block)和多gpu设备同步数据概念

CUDA的设备,流处理器&#xff0c;核&#xff0c;线程块&#xff08;threadblock&#xff09;&#xff0c;线程&#xff0c;网格&#xff08;‌gridDim&#xff09;&#xff0c;块&#xff08;block&#xff09;和多gpu设备同步数据概念 CUDA的设备,流处理器&#xff0c;核&…

spring5-配外部文件-spEL-工厂bean-FactoryBean-注解配bean

spring配外部文件 我们先在Spring里配置一个数据源 1.导c3p0包,这里我们先学一下hibernate持久化框架&#xff0c;以后用mybites. <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-core</artifactId><version>5.2.…

Feature Toggle 不再乱:如何设计一个干净、安全、可控的特性开关系统?

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…

技术分享:大数据挖掘平台架构设计与行业应用实践

在数字化转型浪潮下&#xff0c;企业数据规模呈指数级增长。如何构建高效的数据挖掘体系&#xff0c;实现数据价值变现&#xff0c;成为技术团队面临的重要课题。本文将深入探讨大数据挖掘平台的核心架构、关键技术及行业应用实践。 一、平台架构设计 1. 数据采集层 支持多源异…

计算机视觉与深度学习 | EMD-KPCA-LSTM、EMD-LSTM、LSTM回归预测对比,多输入单输出(Matlab完整程序和数据)

以下是针对EMD-KPCA-LSTM、EMD-LSTM和LSTM回归预测对比的完整可运行MATLAB实现。包含数据生成、特征处理、模型构建和性能评估全流程,并提供关键代码注释和注意事项。 完整代码实现(含数据生成) %% 清理环境 clear; clc; close all; warning off;%% 生成模拟数据(正弦波+噪…

Axure应用交互设计:动态面板嵌套实现超强体验感菜单表头

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:动态面板嵌套 主要内容:利用动态面板多层嵌套实现菜单表头 应用场景:广泛应用于表单表…

HarmonyOS 鸿蒙应用开发基础:父组件和子组件的通信方法总结

在鸿蒙开发中&#xff0c;ArkUI声明式UI框架提供了一种现代化、直观的方式来构建用户界面。然而&#xff0c;由于其声明式的特性&#xff0c;父组件与子组件之间的通信方式与传统的命令式框架有所不同。本文旨在详细探讨在ArkUI框架中&#xff0c;父组件和子组件通信的方法总结…

深度学习模块缝合拼接方法套路+即插即用模块分享

前言 在深度学习中&#xff0c;模型的设计往往不是从头开始&#xff0c;而是通过组合不同的模块来构建。这种“模块缝合”技术&#xff0c;就像搭积木一样&#xff0c;把不同的功能模块拼在一起&#xff0c;形成一个强大的模型。今天&#xff0c;我们就来聊聊四种常见的模块缝…