常用工具类-Collections

常用工具类-Collections

  • 排序操作
  • 查找操作
  • 填充操作
  • 判断集合是否有交集
  • 不可变集合

java.util.Collections类是一个工具类,它包含了一些静态方法,用于操作集合(如列表和映射)。这个类主要用于创建不可修改的集合、填充集合、替换元素等。基本每个方法都是见名知意的。下面练习几个常用的方法

排序操作

  1. reverse(List list) 反转顺序。
  2. shuffle (List list)洗牌,将顺序打乱。
  3. sort(List list)自然升序。
  4. sort (List list,Comparator c) 按照自定义的比较器排序。
  5. swap (List list,int i,in j)将i和j位置的元素交换位置。
// 反转顺序,洗牌,排序,交换值
List<String> list = new ArrayList<>();
list.add("abc");
list.add("def");
list.add("ghi");
list.add("jkl");
list.add("mnq");System.out.println(list); // [abc, def, ghi, jkl, mnq]// 1.reverse()反转顺序
Collections.reverse(list);
System.out.println(list); // [mnq, jkl, ghi, def, abc]// 2.shuffle()洗牌
Collections.shuffle(list);
System.out.println(list); // [def, abc, ghi, jkl, mnq]// 3.sort排序 - 自然升序
Collections.sort(list);
System.out.println(list); // [abc, def, ghi, jkl, mnq]// 4.swap()交换
Collections.swap(list,2,4);
System.out.println(list); // [abc, def, mnq, jkl, ghi] 

查找操作

  • binarySearch(List list, Object key):二分查找法,前提是 List 已经排序过了
  • max(Collection coll):返回最大元素
  • max(Collection coll, Comparator comp):根据自定义比较器,返回最大元素
  • min(Collection coll):返回最小元素
  • min(Collection coll, Comparator comp):根据自定义比较器,返回最小元素
  • fill(List list, Object obj):使用指定对象填充
  • frequency(Collection c, Object o):返回指定对象出现的次数
List<Integer> numList = new ArrayList<>();
numList.add(17);
numList.add(9);
numList.add(12);
numList.add(21);
numList.add(5);
numList.add(5);
numList.add(86);
System.out.println(numList); // [17, 9, 12, 21, 5, 5, 86]// 查找操作// 1.二分查找,查找前,先排序
Collections.sort(numList);
System.out.println(numList); // [5, 5, 9, 12, 17, 21, 86]
int rsIndex = Collections.binarySearch(numList, 17);
System.out.println(rsIndex); // 3// 2.查找集合中的最大值
Integer max = Collections.max(numList);
System.out.println(max);  // 86// 3.查找集合中的最小值
Integer min = Collections.min(numList);
System.out.println(min);  // 5// 4.查找集合中某个元素出现的频率次数
int frequency = Collections.frequency(numList, 5);
System.out.println(frequency);// 2 

填充操作

  • fill(List list, Object obj):使用指定对象填充
  • addAll(Collection<? super T> c, T… elements),往集合中添加元素
// 填充操作// 1.fill()
List<String> list2 = new ArrayList<>();
list2.add("0");
Collections.fill(list2,"list1");
Collections.fill(list2,"list2");
Collections.fill(list2,"list3");
Collections.fill(list2,"list4");
Collections.fill(list2,"list5");
Collections.fill(list2,"list6");
System.out.println(list2); // [list6]// 2.addAll()
List<String> list3 = new ArrayList<>();
Collections.addAll(list3,"list1","list2","list3","list4","list5","list6","list7");
System.out.println(list3); // [list1, list2, list3, list4, list5, list6, list7]

判断集合是否有交集

  • disjoint(Collection<?> c1, Collection<?> c2),判断两个集合是否没有交集
// disjoint() 是否没有交集
List<String> list4 = new ArrayList<>(List.of("list1","list2","abc","def"));
List<String> list5 = new ArrayList<>(List.of("list1","list2","123","456"));
System.out.println(list4.retainAll(list5)); // true  存在交集
System.out.println(Collections.disjoint(list4, list5)); // false 存在交集

不可变集合

  • emptyXxx():制造一个空的不可变集合
  • singletonXxx():制造一个只有一个元素的不可变集合
  • unmodifiableXxx():为指定集合制作一个不可变集合

以Collections.emptyList()为例,看下它的源码:

public static final List EMPTY_LIST = new EmptyList<>();public static final <T> List<T> emptyList() {return (List<T>) EMPTY_LIST;
}

emptyList 方法是 final 的,返回的 EMPTY_LIST 也是 final 的,种种迹象表明 emptyList 返回的就是不可变对象,没法进行增删改查。

示例代码(由此可见,Collections.emptyList()返回的是一个不可变集合)

List<String> emptyList = Collections.emptyList();
emptyList.add("1");
System.out.println(emptyList);

image.png

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

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

相关文章

Redis篇之双写一致性

一、什么的双写一致性 1.定义 双写一致性&#xff1a;当修改了数据库的数据也要同时更新缓存的数据&#xff0c;缓存和数据库的数据要保持一致。 2.正常情况 读操作&#xff1a;缓存命中&#xff0c;直接返回&#xff1b;缓存没命中查询数据库&#xff0c;写入缓存&#xff…

猫头虎分享已解决Bug || IndexError: index 3 is out of bounds for axis 0 with size 3

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

深入学习《大学计算机》系列之第1章 1.7节——图灵机的一个例子

一.欢迎来到我的酒馆 第1章 1.7节&#xff0c;图灵机的一个例子。 目录 一.欢迎来到我的酒馆二.图灵机2.1 艾伦-图灵简介2.2 图灵机简介 三.图灵机工作原理3.1 使用图灵机打印二进制数3.2 图灵机工作原理总结 四.总结 二.图灵机 本节内容主要介绍计算机科学之父——艾伦-图灵、…

java 执行方式和类加载过程

java默认属于混合执行&#xff1a; 编译和解释并存 java先进行解释执行&#xff0c;遇到多次重复的代码会把它编程成可执行文件&#xff0c;方便下次直接执行。 可以通过VM参数来修改执行方式。 类加载过程

前端JavaScript篇之ajax、axios、fetch的区别

目录 ajax、axios、fetch的区别AjaxAxiosFetch总结注意 ajax、axios、fetch的区别 在Web开发中&#xff0c;ajax、axios和fetch都是用于与服务器进行异步通信的技术&#xff0c;但它们在实现方式和功能上有所不同。 Ajax 定义与特点&#xff1a;Ajax是一种在无需重新加载整个…

记录Dynamo每个节点的运行时间

不知道小伙伴们在写Dynamo程序的时候&#xff0c;有没有遇到这种问题→程序运行很慢&#xff0c;但是却不知道该优化哪些节点&#xff0c;可以提高程序运行的速度。 今天呢&#xff0c;就给大家分享一个节点包→TuneUp&#xff0c;在节点包管理器里就可以下载&#xff0c;安装…

10个常考的前端手写题,你全都会吗?(上)

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热爱技术和分享&#xff0c;欢迎大家交流&#xff0c;一起学习进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 今天来分享一下10个常见的JavaScript手写功能。 目录 1.实现new 2.call、apply、…

stm32Cubmax PWM实验

一、基本概念 PWM&#xff08;脉冲宽度调制&#xff09;是一种常用于控制电子设备的技术。它通过改变电信号的脉冲宽度来控制设备的输出功率或电流。在PWM中&#xff0c;所谓的脉冲宽度是指一个周期内脉冲的持续时间。周期是指脉冲重复的时间间隔。 在PWM中&#xff0c;一个周…

Hive窗口函数详解

一、 窗口函数知识点 1.1 窗户函数的定义 窗口函数可以拆分为【窗口函数】。窗口函数官网指路&#xff1a; LanguageManual WindowingAndAnalytics - Apache Hive - Apache Software Foundationhttps://cwiki.apache.org/confluence/display/Hive/LanguageManual%20Windowing…

机器学习2--逻辑回归(案列)

糖尿病数据线性回归预测 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_diabetes diabetesload_diabetes() datadiabetes[data] targetdiabetes[target] feature_namesdiabetes[feature_names] data.shape df …

提升MySQL访问性能

1. 读写分离 设置多个从数据库&#xff0c;从数据库可能在多个机器中。写操作在主数据库进行主数据库提供数据的主要依据 缓解了MySQL的读压力。 主从复制原理图如下 如果对于读操作有一致性要求&#xff0c;那么读操作去主数据库即可。 2. 连接池 因为一个请求必须要…

springboot177健身房管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…