当前位置: 首页 > 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, 决…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;容器探测是指kubelet对容器执行定期诊断的过程&#xff0c;以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...