【java学习—十】操作集合的工具类Collections(8)

文章目录

  • 1. 操作集合的工具类: Collections
  • 2. 应用
  • 3. 查找、替换
  • 3.1. max 与 min
    • 3.2. 根据Comparator返回max(min)
  • 3.3. frequency 与 replaceAll
  • 4. 同步控制


1. 操作集合的工具类: Collections

    Collections 是一个操作 SetListMap 等集合的工具类
    Collections 中提供了大量方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法。
    
排序操作:
    • reverse(List) :反转 List 中元素的顺序
    • shuffle(List) :对 List 集合元素进行随机排序
    • sort(List) :根据元素的自然顺序对指定 List 集合元素按升序排序
    • sort(List, Comparator) :根据指定的 Comparator 产生的顺序对 List集合元素进行排序
    • swap(List, int , int) :将指定 list 集合中的 i 处元素和 j 处元素进行交换

2. 应用

举例1:

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("b");list.add("cd");list.add("ca");list.add("a");list.add("1");System.out.println(list);Collections.reverse(list);//反转List中元素的顺序System.out.println(list);Collections.shuffle(list);//对List集合进行随机排序System.out.println(list);Collections.sort(list);//list集合以字典升序排列System.out.println(list);}
}

运行结果:

在这里插入图片描述

举例2:

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {Student s1 = new Student(14, "张三");Student s2 = new Student(12, "李四");Student s3 = new Student(13, "王五");Student s4 = new Student(11, "杨六");List<Student> stus = new ArrayList<Student>();stus.add(s1);stus.add(s2);stus.add(s3);stus.add(s4);for(Student stu : stus) {System.out.println(stu.name + "," + stu.age);}System.out.println("----------------------------------");//根据元素的自然顺序对指定 List 集合元素按升序排序Collections.sort(stus, new Student());for(Student stu : stus) {System.out.println(stu.name + "," + stu.age);}}}class Student implements Comparator<Student>{int age;String name;public Student() {}public Student(int age, String nmae) {this.age = age;this.name = nmae;}@Overridepublic int compare(Student o1, Student o2) {//根据年龄升序排列对象if(o1.age > o2.age) {return 1;}else if(o1.age < o2.age) {return -1;}else {return 0;}}}

运行结果:
在这里插入图片描述

举例3:将指定 list 集合中的 i 处元素和 j 处元素进行交换

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("b");list.add("cd");list.add("ca");list.add("a");list.add("1");System.out.println(list);Collections.reverse(list);//反转List中元素的顺序System.out.println(list);Collections.shuffle(list);//对List集合进行随机排序System.out.println(list);Collections.sort(list);//list集合以字典升序排列System.out.println(list);Collections.swap(list, 0, 4);//将指定 list 集合中的 i 处元素和 j 处元素进行交换System.out.println(list);	}}

运行结果:

在这里插入图片描述

3. 查找、替换

3.1. max 与 min

    Object max(Collection):根据元素的自然顺序,返回给定集合中的最大元素
    Object min(Collection):根据元素的自然顺序,返回给定集合中的最小元素

举例:

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("b");list.add("cd");list.add("ca");list.add("a");list.add("1");System.out.println(list);Collections.reverse(list);//反转List中元素的顺序System.out.println(list);Collections.shuffle(list);//对List集合进行随机排序System.out.println(list);Collections.sort(list);//list集合以字典升序排列System.out.println(list);System.out.println(Collections.max(list));//根据元素的自然顺序,返回给定集合中的最大元素System.out.println(Collections.min(list));//根据元素的自然顺序,返回给定集合中的最小元素}}

运行结果:
在这里插入图片描述

3.2. 根据Comparator返回max(min)

    Object max(Collection , Comparator) :根据 Comparator 指定的顺序,返回给定集合中的最大元素
    Object min(Collection , Comparator):根据 Comparator 指定的顺序,返回给定集合中的最小元素

举例:

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {Student s1 = new Student(14, "张三");Student s2 = new Student(12, "李四");Student s3 = new Student(13, "王五");Student s4 = new Student(11, "杨六");List<Student> stus = new ArrayList<Student>();stus.add(s1);stus.add(s2);stus.add(s3);stus.add(s4);//根据 Comparator 指定的顺序,返回给定集合中的最大元素Student s = Collections.max(stus, new Student());System.out.println(s.name + "," + s.age);//根据 Comparator 指定的顺序,返回给定集合中的最小元素Student ss = Collections.min(stus, new Student());System.out.println(ss.name + "," + ss.age);}
}class Student implements Comparator<Student>{int age;String name;public Student() {}public Student(int age, String nmae) {this.age = age;this.name = nmae;}@Overridepublic int compare(Student o1, Student o2) {//根据年龄升序排列对象if(o1.age > o2.age) {return 1;}else if(o1.age < o2.age) {return -1;}else {return 0;}}
}

运行结果:
在这里插入图片描述

3.3. frequency 与 replaceAll

    int frequency(Collection , Object) :返回指定集合中指定元素的出现次数
    boolean replaceAll(List list , Object oldVal , Object newVal) :使用新值替换 List 对象的所有旧值

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;public class Test7 {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("b");list.add("cd");list.add("ca");list.add("a");list.add("1");list.add("a");//返回指定集合中指定元素的出现次数System.out.println(Collections.frequency(list, "a"));System.out.println(Collections.frequency(list, "b"));System.out.println(Collections.frequency(list, "x"));//使用新值替换List对象的所有旧值Collections.replaceAll(list, "a", "aa");System.out.println(list);}
}

运行结果:
在这里插入图片描述

4. 同步控制

这部分了解即可

    Collections 类中提供了多个 synchronizedXxx() 方法,该方法可使将指定集合包装成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题

在这里插入图片描述

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

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

相关文章

Spring XML使用CASE WHEN处理SELECT字段

在日常开发中&#xff0c;经常会碰到需要导出的情况。而一些枚举值或者状态一般是定义成整型&#xff0c;这个时候需要对数据进行转换&#xff0c;转换成对应的文本再导出。 在XML中用CASE WHEN来根据不同的查询结果做不同的处理。 比如 SELECT name AS 姓名, age AS 年龄 C…

红黑树——插入底层实现【C++】面试重灾区!!

目录 前言 一&#xff0c;概念 定义 二&#xff0c;insert 情况一&#xff1a; 情况二&#xff1a; 情况三&#xff1a; insert代码 三&#xff0c; 红黑树验证(面试题) 产生随机数验证 每日一图区&#xff1a; 前言 AVL树是一棵绝对平衡的二叉搜索树&#xff0c;其…

shell script中的数值运算declare和$((运算式 ))

linux中变量定义默认是字符串类型&#xff0c;如要进行数值运算&#xff0c;需要先声明变量类型&#xff0c;或者通过固定格式来计算 看案例 如果不通过固定格式&#xff0c;直接 echo 55 如图&#xff0c;结果显示的55本身 可以写成 declare -i var#声明变量integrate类型&…

ref、reactive、toRef、toRefs

ref 作用&#xff1a;定义一个响应式数据 语法&#xff1a;const xxx ref(initValue) 创建一个包含响应式数据的引用对象 js中操作数据&#xff1a;xxx.value 模板中读取数据&#xff1a;不需要.value,直接<div>{{xxx}}</div> 接收的数据&#xff1a;基本类型、对…

【aspose之三】【springboot】java使用aspose.html 的cloud版html转pdf,html2pdf

前言 把url网页或本地文件html转换pdf 一、html转pdf 一&#xff09;代码实现 1.maven配置 <dependency><groupId>com.aspose</groupId><artifactId>aspose-html-cloud</artifactId><version>22.12.1</version></dependency>…

计算机视觉 计算机视觉识别是什么?

计算机视觉识别&#xff08;Computer Vision Recognition&#xff09;是计算机科学和人工智能领域中的一个重要分支&#xff0c;它致力于使计算机系统能够模拟和理解人类视觉的过程&#xff0c;从而能够自动识别、分析和理解图像或视频中的内容。这一领域的发展旨在让计算机具备…

python---数据类型(列表)

组织列表 使用sort()方法对列表永久性排序 按照字母顺序排序&#xff1a; motorcycles [chunlan, yamaha, dayun, jianshe]motorcycles.sort()print(motorcycles) 字母倒序&#xff1a; motorcycles [chunlan, yamaha, dayun, jianshe]motorcycles.sort(reverseTrue)pri…

SQL server数据库定时搜索

问题现象 出现下图问题&#xff0c;导致连接该数据库的程序不能正常启动 解决办法 定时搜索数据库 脚本 # 设置数据库名称 # 设置定时任务时间# 生成定时任务执行sql文件 sql语句 USE [master] GO ALTER DATABASE volador SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DA…

软件测试:压力测试详解

压力测试 压力测试是一种软件测试&#xff0c;用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&#xff0c;并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试&#xff0c;并评估软件在极端…

java中main方法和@Test注解的区别

Java的main方法和Test注解在用途和功能上有很大的区别。 main方法是Java应用程序的入口点。当你运行一个Java程序时&#xff0c;JVM会首先查找具有public static void main(String[] args)签名的类&#xff0c;并从这个方法开始执行程序。main方法通常用于控制程序的启动、执行…

界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

DevExpress WPF Gauge&#xff08;仪表&#xff09;控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器&#xff0c;同时还具有最终用户交互性的集成支持。 P.S&#xff1a;DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至…

自适应H5樱花个人网站引导页导航源码SEO增强版

懂前端和 PHP 技术想更改前端页面的可以看&#xff1a;网站的前端页面不好看&#xff0c;你可以查看 index 目录&#xff0c;内有参数 txt 文本里面记录了前端页面所使的关键 JS 代码和 php 代码&#xff0c;只需要稍加复制粘贴修改到新的前端页面就可以了&#xff01;主目录的…

驱动开发11-1 编写IIC驱动-读取温湿度数据

头文件 head.h #ifndef __HEAD_H__ #define __HEAD_H__ #define GET_HUM _IOR(m, 1, int) #define GET_TEM _IOR(m, 0, int) #endif 应用程序 si7006.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #inc…

什么是Webpack的loader和plugin?它们的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别 计算机竞赛

文章目录 0 前言1 背景2 算法原理2.1 动物识别方法概况2.2 常用的网络模型2.2.1 B-CNN2.2.2 SSD 3 SSD动物目标检测流程4 实现效果5 部分相关代码5.1 数据预处理5.2 构建卷积神经网络5.3 tensorflow计算图可视化5.4 网络模型训练5.5 对猫狗图像进行2分类 6 最后 0 前言 &#…

LeetCode字符串题库 之 罗马数字转整数

题目链接&#x1f517;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 1. 题目分析 我们在做题的时候&#xff0c;一定要知道题目的目的是什么&#xff0c;我们可以结合测试用例和提示来看。 我们可以分析以下几点&#xff1a; 1. 每一个罗马数字都…

Linux 目录

目录 1. Linux 目录1.1. 目录 /usr/bin 和 /usr/local/bin 区别 1. Linux 目录 1.1. 目录 /usr/bin 和 /usr/local/bin 区别 /usr/bin 下面的都是系统预装的可执行程序, 系统升级有可能会被覆盖。/usr/local/bin 目录是给用户放置自己的可执行程序。

物联网系统的基本构件

1.基本组件 云服务器 数据库消息服务器应用服务器管理平台 云APP 云服务器的维护终端微信客户端网页管理平台 页面式的更全面的管理。组态软件和PLC软件 编程软件终端设备 PLC 主要指标&#xff0c;模拟数字接口数量 DO有 继电器和1.5,2.5.5V数字输出一般支持扩展IO模块模拟量…

C++设计模式_25_Interpreter 解析器

Interpreter 解析器被归为“领域规则”模式。Interpreter模式比较适合简单的文法表示,应用场景是比较有限的,解决问题的思路和场景都是一样的。 文章目录 1. “领域规则”模式1.1 典型模式2. 动机( Motivation)3. 代码演示Interpreter 解析器模式4. 模式定义5. 结构( Structu…

目标检测:Proposal-Contrastive Pretraining for Object Detection from Fewer Data

论文作者&#xff1a;Quentin Bouniot,Romaric Audigier,Anglique Loesch,Amaury Habrard 作者单位&#xff1a;Universit Paris-Saclay; Universit Jean Monnet Saint-Etienne; Universitaire de France (IUF) 论文链接&#xff1a;http://arxiv.org/abs/2310.16835v1 内容…