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

Java常用API之Collections类解读

写在开头:本文用于作者学习Java常用API

我将官方文档中Collections类中所有API全测了一遍并打印了结果,日拱一卒,常看常新

addAll()

将所有指定元素添加到指定 collection 中
        可以添加一个或多个元素

@Testpublic void test_addAll(){/*将所有指定元素添加到指定 collection 中* 可以添加一个或多个元素*/ArrayList<String> strings = new ArrayList<>();strings.add("1");strings.add("2");strings.add("3");Collections.addAll(strings, "a","b","c");System.out.println(strings);//[1, 2, 3, a, b, c]System.out.println(Collections.addAll(strings, "d"));System.out.println(strings);//[1, 2, 3, a, b, c, d]}

asLifQueue()

该方法用于将指定的Deque(双端队列)转换为后进先出(LIFO)队列

@Testpublic void test_asLifQueue(){/*该方法用于将指定的Deque(双端队列)转换为后进先出(LIFO)队列。*/ArrayDeque<String> deque = new ArrayDeque<>();deque.add("first");deque.add("second");deque.add("third");System.out.println(deque);//[first, second, third]Queue<String> queue = Collections.asLifoQueue(deque);while (!queue.isEmpty()){String poll = queue.poll();System.out.println(poll);//转换为后进先出(LIFO)队列时,并不改变元素的顺序,而是将Deque视为LIFO队列。因此,在使用poll方法时,仍然是按照Deque的顺序取出元素,而不是按照后进先出的顺序。/*firstsecondthird*/}}

binarySearch()

输入指定元素,返回对应的下标

        -5:该元素不存在

@Testpublic void test_binarySearch(){/*输入指定元素,返回对应的下标-5:该元素不存在*/List<Integer> list = Arrays.asList(1, 2, 3, 4);System.out.println(Collections.binarySearch(list, 1));//0System.out.println(Collections.binarySearch(list, 2));//1System.out.println(Collections.binarySearch(list, 5));//-5 表示不存在System.out.println(Collections.binarySearch(list, 8));//-5System.out.println(Collections.binarySearch(list, 11));//-5}

copy()

将所有元素从一个列表复制到另一个列表。第一个参数是目标列表,第二个是源列表

        目标列表长度必须不小于源列表

@Testpublic void test_copy(){/*将所有元素从一个列表复制到另一个列表。第一个参数是目标列表,第二个是源列表* 目标列表长度必须不小于源列表*/List<Integer> src = Arrays.asList(1, 2, 3, 4);List<Integer> dest = Arrays.asList(0,0,0,0);Collections.copy(dest,src);System.out.println(dest);//[1, 2, 3, 4]List<Object> dest1 = Collections.emptyList();//造一个空列表/*Collections.copy(dest1,src);//报错:目标列表长度小于源列表长度System.out.println(dest1);//IndexOutOfBoundsException: Source does not fit in dest*/List<Object> dest2 = Collections.nCopies(4, null);//会生成一个包含4个null元素的不可变列表System.out.println(dest2);//[null, null, null, null]/*Collections.copy(dest2,src);//报错:UnsupportedOperationExceptionSystem.out.println(dest2);*/ArrayList<Integer> dest3 = new ArrayList<>();dest3.add(0);dest3.add(0);dest3.add(0);dest3.add(0);dest3.add(0);Collections.copy(dest3,src);System.out.println(dest3);//[1, 2, 3, 4, 0]}

disjoint()

判断两个集合是否完全不包含对方集合的元素
        完全不包含,返回 true。
        哪怕包含1个,都返回false

@Testpublic void test_disjoint(){/*判断两个集合是否完全不包含对方集合的元素完全不包含,返回 true。哪怕包含1个,都返回false*/List<Integer> c1 = Arrays.asList(1, 2, 3, 4);List<Integer> c2 = Arrays.asList(1, 2, 3, 4);System.out.println(Collections.disjoint(c1, c2));//falseList<Integer> c3 = Arrays.asList(1, 5, 6);System.out.println(Collections.disjoint(c1, c3));//falseList<Integer> c4 = Arrays.asList(7, 5, 6);System.out.println(Collections.disjoint(c1, c4));//true}

emptyList()

返回一个不可变空列表

@Testpublic void test_emptyList(){/*返回一个不可变空列表* 意义:* 1. 节省内存:由于空列表是不可变的,可以在不需要实际数据的情况下节省内存空间。在某些场景下,需要一个空列表作为占位符或默认返回值,此时使用Collections.emptyList()可以避免创建多个空列表对象。2. 避免空指针异常:在某些情况下,需要返回一个空列表而不是null,以避免空指针异常。使用Collections.emptyList()可以提供一个安全的空列表对象。3. API一致性:在一些API设计中,需要返回一个空列表作为特定情况的标识符,使用Collections.emptyList()可以保持API的一致性和规范性。虽然Collections.emptyList()返回的空列表不能被修改,但它在某些情况下仍然具有一定的实用性和意义。*/List<Object> objects = Collections.emptyList();System.out.println(objects);//[]//        System.out.println(objects.add("dahua"));//UnsupportedOperationException}

emptyMap()

返回1个空的map(不可变的)

@Testpublic void test_emptyMap(){/*返回1个空的map(不可变的)。*/Map<Object, Object> objectMap = Collections.emptyMap();System.out.println(objectMap);//{}}

emptySet()

返回1个空的set(不可变的)

@Testpublic void test_emptySet(){/*返回1个空的set(不可变的)*/Set<Object> objectSet = Collections.emptySet();System.out.println(objectSet);//[]}

enumeration()

返回一个枚举类型的列表

@Testpublic void test_enumeration(){/*返回一个枚举类型的列表*/List<String> c = Arrays.asList("dahua", "xiaoyabing", "sangxinran", "fangmangmang");Enumeration<String> enumeration = Collections.enumeration(c);System.out.println(enumeration);//java.util.Collections$3@3d82c5f3while (enumeration.hasMoreElements()){System.out.println(enumeration.nextElement());}/*dahuaxiaoyabingsangxinranfangmangmang*/}

fill()

使用指定元素替换、填充指定列表中的所有元素

@Testpublic void test_fill(){/*使用指定元素替换、填充指定列表中的所有元素*/List<String> c = Arrays.asList("dahua", "xiaoxiao", "xiaosang", "xiaofang");Collections.fill(c,"lgf");System.out.println(c);//[lgf, lgf, lgf, lgf]}

frequency()

返回集合中指定对象的个数

@Testpublic void test_frequency(){/*返回集合中指定对象的个数*/List<String> c = Arrays.asList("dahua", "xiaoxiao", "xiaosang", "xiaofang","xiaofang");System.out.println(Collections.frequency(c, "xiaofang"));//2System.out.println(Collections.frequency(c, "dahua"));//1}

indexOfSubList()

返回一个数组列表,它按返回顺序包含指定枚举返回的元素

@Testpublic void test_indexOfSubList(){/*返回指定源列表中第一次出现指定目标列表的起始位置;如果没有出现这样的列表,则返回 -1*/List<String> src = Arrays.asList("dahua", "xiaoxiao", "xiaosang", "xiaofang","xiaofang");List<String> target = Arrays.asList("dahua", "xiaoxiao", "xiaosang", "xiaofang","xiaofang");System.out.println(Collections.indexOfSubList(src, target));//0List<String> target1= Arrays.asList("dahua", "xiaoxiao", "xiaosang", "xiaofang","xiaofang","dahai");System.out.println(Collections.indexOfSubList(src, target1));//-1}

list()

返回一个数组列表,它按返回顺序包含指定枚举返回的元素

@Testpublic void test_list(){/*返回一个数组列表,它按返回顺序包含指定枚举返回的元素*/List<String> c = Arrays.asList("dahua", "xiaoyabing", "sangxinran", "fangmangmang");Enumeration<String> enumeration = Collections.enumeration(c);ArrayList<String> list = Collections.list(enumeration);System.out.println(list);//[dahua, xiaoyabing, sangxinran, fangmangmang]Vector<String> vector  = new Vector<>();vector.add("Apple");vector.add("Banana");vector.add("Orange");Enumeration<String> elements = vector.elements();ArrayList<String> list1 = Collections.list(elements);System.out.println(list1);//[Apple, Banana, Orange]}

max()

根据元素的自然顺序,返回集合中的最大元素
        *
        * 也可以自定义排序规则

@Testpublic void test_max(){/*根据元素的自然顺序,返回集合中的最大元素** 也可以自定义排序规则*/List<String> coll = Arrays.asList("dahua", "xiaoyabing", "sangxinran", "fangmangmang");System.out.println(Collections.max(coll));//xiaoyabing/*自定义大小规则第二个参数写比较器,返回给定 集合 的最大元素*/String max = Collections.max(coll, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {int i = o1.substring(0).hashCode();int i1 = o2.substring(0).hashCode();return i - i1;}});System.out.println(max);//fangmangmang}

min()

返回集合最小元素

@Testpublic void test_min(){/** 返回集合最小元素* */
//        Collections.min()}

nCopies()

返回由指定对象的 n 个副本组成的不可变列表

@Testpublic void test_nCopies(){/*返回由指定对象的 n 个副本组成的不可变列表*/List<String> dahua = Collections.nCopies(5, "dahua");System.out.println(dahua);//[dahua, dahua, dahua, dahua, dahua]List<Object> objects = Collections.nCopies(5, null);System.out.println(objects);//[null, null, null, null, null]/*objects.add("xiaomei");//UnsupportedOperationException,不可变了System.out.println(objects);*/}

newSetFromMap()

将Map转成set结构,前提是map必须为空

@Testpublic void test_newSetFromMap(){/*将Map转成set结构,前提是map必须为空*/Map<String, Boolean> map = new HashMap<>();map.put("Apple", true);map.put("Banana", false);map.put("Orange", true);
//        Set<String> set1 = Collections.newSetFromMap(map);//IllegalArgumentException: Map is non-empty:map必须为空map.clear();Set<String> set = Collections.newSetFromMap(map);}

replaceAll()

用一个值替换集合原有子串

@Testpublic void test_replaceAll(){/*我的:用一个值替换集合原有子串官方:使用另一个值替换列表中出现的所有某一指定值*/List<String> list = Arrays.asList("dahua", "xiaoyabing", "sangxinran", "fangmangmang");Collections.replaceAll(list,"dahua","xiaoliang");System.out.println(list);//[xiaoliang, xiaoyabing, sangxinran, fangmangmang]}

reverse()

列表元素反转

@Testpublic void test_reverse(){/*列表元素反转*/List<String> list = Arrays.asList("dahua", "xiaoyabing", "sangxinran", "fangmangmang");Collections.reverse(list);System.out.println(list);//[fangmangmang, sangxinran, xiaoyabing, dahua]}

rotate()

指定的距离循环滚动

@Testpublic void test_rotate(){/*指定的距离循环滚动*/List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);// 将列表向右循环移动2个位置,第一个元素往右走两格Collections.rotate(list, 2);System.out.println(list);//[4, 5, 1, 2, 3]}

shuffle()

将列表元素随机打乱

@Testpublic void test_shuffle(){/*将列表元素随机打乱*/List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);Collections.shuffle(list);System.out.println(list);//[3, 5, 4, 1, 2] 第一次运行结果System.out.println(list);//[2, 5, 4, 3, 1] 第二次运行结果System.out.println(list);//[4, 3, 2, 5, 1] 第三次运行结果}

singleton()

返回一个只包含指定对象的不可变 set

Testpublic void test_singleton(){/*返回一个只包含指定对象的不可变 set*/List<String> list = Arrays.asList("dahua", "dahua", "sangxinran", "fangmangmang");Set<List<String>> singleton = Collections.singleton(list);System.out.println(singleton);//[[dahua, dahua, sangxinran, fangmangmang]]}

相关文章:

Java常用API之Collections类解读

写在开头&#xff1a;本文用于作者学习Java常用API 我将官方文档中Collections类中所有API全测了一遍并打印了结果&#xff0c;日拱一卒&#xff0c;常看常新 addAll() 将所有指定元素添加到指定 collection 中 可以添加一个或多个元素 Testpublic void test_addAl…...

KV260 BOOT.BIN更新 ubuntu22.04 netplan修改IP

KV260 2022.2设置 BOOT.BIN升级 KV260开发板需要先更新BOOT.BIN到2022.2版本&#xff0c;命令如下&#xff1a; sudo xmutil bootfw_update -i “BOOT-k26-starter-kit-202305_2022.2.bin” 注意BOOT.BIN应包含全目录。下面是更新到2022.1 FW的示例&#xff0c;非更新到2022.…...

Android 代码自定义drawble文件实现View圆角背景

简介 相信大多数Android开发都会遇到一个场景&#xff0c;给TextView或Button添加背景颜色&#xff0c;修改圆角&#xff0c;描边等需求。一看到这样的实现效果&#xff0c;自然就是创建drawble文件&#xff0c;设置相关属性shap&#xff0c;color&#xff0c;radius等。然后将…...

C#实现Word文档转Markdown格式(Doc、Docx、RTF、XML、WPS等)

文档格式的多样性丰富了我们的信息交流手段&#xff0c;其中Word文档因其强大的功能性而广受欢迎。然而&#xff0c;在网络分享、版本控制、代码阅读及编写等方面&#xff0c;Markdown因其简洁、易于阅读和编辑的特性而展现出独特的优势。将Word文档转换为Markdown格式&#xf…...

信息系统架构设计-以服务为中心的企业整合实践

生命周期 业务分析服务建模架构设计系统开发 案例背景 某航空公司的信息系统已有好几十年的历史。该航空公司的主要业务系统构建于20世纪七八十年代&#xff0c;以IBM的主机系统为主。 近年来&#xff0c;该公司已经在几个主要的核心系统之间构建了用于信息集成的信息Hub(I…...

mysql知识点梳理

mysql知识点梳理 一、InnoDB引擎中的索引策略&#xff0c;了解过吗&#xff1f;二、一条 sql 执行过长的时间&#xff0c;你如何优化&#xff0c;从哪些方面入手&#xff1f;三、索引有哪几种类型&#xff1f;四、SQL 约束有哪几种呢&#xff1f;五、drop、delete、truncate的区…...

版本排序,(如果 版本 是 1,1a,1.1a, 2, 2c , 1c , 1.2a, 3 , 5b , 5)进行排序

如果 版本 是 1&#xff0c;1a&#xff0c;1.1a&#xff0c; 2&#xff0c; 2c &#xff0c; 1c &#xff0c; 1.2a&#xff0c; 3 &#xff0c; 5b &#xff0c; 5 对上面的进行排序 利用 VersionComparator 导入依赖 <dependency><groupId>cn.hutool</groupId…...

Google视觉机器人超级汇总:从RT、RT-2到AutoRT、SARA-RT、RT-Trajectory

前言 随着对视觉语言机器人研究的深入&#xff0c;发现Google的工作很值得深挖&#xff0c;比如RT-2 ​想到很多工作都是站在Google的肩上做产品和应用&#xff0c;​Google真是科技进步的核心推动力&#xff0c;做了大量大模型的基础设施&#xff0c;服 故有了本文&#xf…...

python笔记(9)Dictionary(字典)

目录 创建字典 取值 修改字典 删除 内置函数和方法 创建字典 字典键值和value用&#xff1a;隔开&#xff0c;键值是不可变的&#xff0c;而且必须是唯一的&#xff0c;值可以变&#xff0c;可以是任意类型 dict {key1 : value1, key2 : value2 } 1&#xff09;不允许同…...

蓝桥杯嵌入式总结

用到外部时钟&#xff1a;UART,ADC,RTC 用到中断&#xff1a;UART,TIM LED_KEY: 将高低电平写入对应引脚 HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET); 读取对应引脚的电平状态 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) UART: 发送&#xff1a; int fputc(int …...

渗透测试:数据库UDF提权(linux)

目录 开头: 1.UDF提权简介&#xff1a; 1.1共享库文件(UDF文件)指定目录&#xff1a; 版本特征&#xff1a; 操作系统版本&#xff1a; 2.靶场UDF提权复现 提权前提 1.要有一个高权限的MySQL的账号 ​编辑 2.MySQL的权限配置secure_file_priv为空 3.必须有存放UDF文件的…...

java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入…...

HuggingFace踩坑记录-连不上,根本连不上

学习 transformers 的第一步&#xff0c;往往是几句简单的代码 from transformers import pipelineclassifier pipeline("sentiment-analysis") classifier("We are very happy to show you the &#x1f917; Transformers library.") ""&quo…...

面试题:Spring Boot Starter的功能与使用场景

Spring Boot Starter 是 Spring Boot 框架为了简化项目的初始化和配置工作而设计的一种模块化依赖管理方式。它主要具有以下几个关键功能和使用场景&#xff1a; 功能&#xff1a; 1. 依赖管理每个 Starter 都是一组相关的依赖项集合&#xff0c;这些依赖项都是为了实现特定功能…...

上位机图像处理和嵌入式模块部署(qmacvisual之n点标定)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 工业场景中&#xff0c;很多时候图像是用来做测量的。虽然我们很希望载台是平的&#xff0c;摄像头是正对着拍摄物体的&#xff0c;但是运行时间长…...

Francek Chen 的128天创作纪念日

目录 Francek Chen 的128天创作纪念日机缘收获日常成就憧憬 Francek Chen 的128天创作纪念日 Francek Chen 的个人主页 机缘 不知不觉的加入CSDN已有两年时间了&#xff0c;最初我第一次接触CSDN技术社区是在2022年4月的时候&#xff0c;通过学长给我们推荐了几个IT社区平台&a…...

PyTorch之Torch Script的简单使用

一、参考资料 TorchScript 简介 Torch Script Loading a TorchScript Model in C TorchScript 解读&#xff08;一&#xff09;&#xff1a;初识 TorchScript libtorch教程&#xff08;一&#xff09;开发环境搭建&#xff1a;VSlibtorch和Qtlibtorch 二、Torch Script模型格…...

vscode 连接远程服务器 服务器无法上网 离线配置 .vscode-server

离线配置 vscode 连接远程服务器 .vscode-server 1. .vscode-server下载 使用vscode连接远程服务器时会自动下载配置.vscode-server文件夹&#xff0c;如果远程服务器无法联网&#xff0c;则需要手动下载 1&#xff09;网址&#xff1a;https://update.code.visualstudio.com…...

arm开发板移植工具mkfs.ext4

文章目录 一、前言二、手动安装e2fsprogs1、下载源码包2、解压源码3、配置4、编译5、安装 三、移植四、验证五、总结 一、前言 在buildroot菜单中&#xff0c;可以通过勾选e2fsprogs工具来安装mkfs.ext4工具&#xff1a; Target packages -> Filesystem and flash utilit…...

某盾滑块拼图验证码增强版

介绍 提示&#xff1a;文章仅供交流学习&#xff0c;严禁用于非法用途&#xff0c;如有不当可联系本人删除 最近某盾新推出了&#xff0c;滑块拼图验证码&#xff0c;如下图所示&#xff0c;这篇文章介绍怎么识别滑块距离相关。 参数attrs 通过GET请求获取的参数attrs, 决…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

【项目实战】通过多模态+LangGraph实现PPT生成助手

PPT自动生成系统 基于LangGraph的PPT自动生成系统&#xff0c;可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析&#xff1a;自动解析Markdown文档结构PPT模板分析&#xff1a;分析PPT模板的布局和风格智能布局决策&#xff1a;匹配内容与合适的PPT布局自动…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...