【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.hqwc.cn/news/155708.html

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

相关文章

SpringCloud(四) Nacos注册中心

目录 一, Nacos 1.1 Nacos的安装 1.2 服务注册到Nacos 1, 引入依赖 2, 配置Nacos地址 3, 重启 4, 进行访问 二, 服务分级存储模型 2.1 分级模型 2.2 Nacos的集群配置 1, 给user-service配置集群 2, 同集群优先的负载均衡 2.3 权重配置 国内公司一般都推崇阿里巴巴…

vue3+jsx+antd的插槽写法之一

如果在jsx里面直接这样按照官方的写法是会报错的 正确写法是&#xff1a;

App测试基本流程以及注意事项

1 APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间&#xff0c;一般测试时间为两三周&#xff08;即15个工作日&#xff09;&#xff0c;根据项目情况以及版本质量可适当缩短或延长测试时间。 1.3测试资源 测试任务开始前&#xff0c;检查…

代购商城源码如何保障用户信息和交易数据的安全性?

多样支付方式的需求和背景 支付方式的重要性 随着电子商务的快速发展&#xff0c;支付是在线购物过程中至关重要的环节。不同用户有着不同的支付习惯和需求&#xff0c;因此一个代购商城源码需要支持多种支付方式&#xff0c;以满足用户的个性化需求。 便捷性和安全性的需求 支…

第2篇 机器学习基础 —(3)机器学习库之Scikit-Learn

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Scikit-Learn&#xff08;简称Sklearn&#xff09;是Python 的第三方模块&#xff0c;它是机器学习领域当中知名的Python 模块之一&#xff0c;它对常用的机器学习算法进行了封装&#xff0c;包括回归&#xff08;Regressi…

Java日志组件介绍之一

一、前言 前段时间爆出Log4j安全漏洞的事情&#xff0c;XX云因未及时报告漏洞被工信部暂停网络安全威胁和漏洞信息共享平台合作单位&#xff08;https://www.cstis.cn/&#xff09;&#xff0c;话说Java的日志组件真是多而且也比较乱&#xff0c;后续几篇文章就聊一下各日志组…

mybatisplus 常用注解

文章目录 1.TableName1.1 引出问题1.2 解决问题a、使用注解解决问题b、使用全局配置解决问题 2.TableId2.1 引出问题2.2 解决问题2.3 TableId的value属性2.4 TableId的type属性 3.TbaleField3.1 情况一3.2 情况二 4.TableLogic4.1 逻辑删除4.2 实现逻辑删除 MyBatis-Plus提供的…

mysql出现Deadlock死锁排查

参考: https://www.yisu.com/zixun/664543.html 查看mysql死锁日志 show engine innodb status找到信息中LATEST DETECTED DEADLOCK这一行&#xff0c;可以看到mysql的死锁信息详情 ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2023-10-31…

怎么搭建一个蛋糕店小程序?

在当今的移动互联网时代&#xff0c;很多企业纷纷选择了小程序作为推广和销售的利器。对于蛋糕店来说&#xff0c;创建一个小程序可以提高品牌知名度&#xff0c;增加销售渠道。下面&#xff0c;我们以【乔拓云】第三方平台为例&#xff0c;来介绍一个完整蛋糕店小程序的制作流…

[云原生1.] Docker--harbor私有仓库部署与管理

文章目录 1. Harbor概述1.1 什么是Harbor1.2 Harbor的组织构成1.2.1 Proxy1.2.2 Registry1.2.3 Core services1.2.4 Database&#xff08;harbor-db&#xff09;1.2.5 Job services1.2.6 Log collector&#xff08;harbor-log&#xff09; 1.3 Harbor的特点 2. 部署Harbor服务2…

批量去除pdf每一页相同未知的同样的内容

例如我想去除每一页右下角的www.alevelcollege.com ①打开acrobat pro ②编辑文件和图像 ③ctrlF输入字符串www.alevelcollege.com替换为空 ④鼠标点击替换 ⑤回车键按下不放&#xff0c;会自动翻页&#xff0c;直到翻页到最后一页。

AUTOSAR CAN协议栈架构总览介绍

Classic AUTOSAR层级架构简介 如下图是Classic AUTOSAR层级架构图,每个层主要功能如下 微控制器抽象层:使上层软件和微处理器型号无关,包含MCU中内部外设的驱动以及MCU内存映射的外部设备的驱动ECU抽象层:使上层软件和ECU硬件设计无关,包含ECU板上外部设备的驱动以及内部…