【 java 集合】Collections工具类的使用

news2025/1/19 3:02:49

📋 个人简介

  • 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜
  • 📝 个人主页:馆主阿牛🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:java 小白到高手的蜕变🍁
  • 💬格言:要成为光,因为有怕黑的人!🔥
    请添加图片描述

目录

    • 📋 个人简介
  • 前言
    • Collections概述
    • Collections中一些方法的测试
      • 排序操作
      • 查找、替换
      • 同步控制
  • 结语

前言

在学数组时有个Arrays工具类,相应的,我们在学完集合后也有一个Collections工具类,一些方法还是很重要的,大概来看一下吧!

Collections概述

  • Collections 是一个操作 Set 、 List 和 Map 等集合的工具类。
  • Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作,还提供了对集合对象设置不可变、对集合对象实现同步控制等方法!
  • 需要注意比较常见的一道面试题:Collections和Collection的区别是什么?
    Collection是存储单列数据的集合接口,Collections是操作集合的工具类,当然也可以操作Map。

Collections中一些方法的测试

这里大概看一下这个工具类中比较常用的方法:

排序操作

reverse ( List ):反转 List 中元素的顺序
shufle ( List ):对 List 集合元素进行随机排序
sort ( List ):根据元素的自然顺序对指定 List 集合元素技升序排序
sort ( List , comparator ):根据指定的 Comparator 产生的顺序对 List 集合元素进行排序
swap ( List , int i, int j ):将指定 list 集合中的 i 处元素和 j 处元素进行交换

public static void main(String[] args) {
        List list = new ArrayList();
        list.add(4);
        list.add(2);
        list.add(5);
        list.add(8);
        list.add(10);
        System.out.println("原列表: " + list);
        //反转
        Collections.reverse(list);
        System.out.println("反转后的列表: " + list);

        //自然排序升序(整数的包装类自然排序是重写好的,默认升序)
        Collections.sort(list);
        System.out.println("排序后的列表(升序): " + list);

        //定制排序降序
        Collections.sort(list, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return -Integer.compare((Integer) o1, (Integer) o2);
            }
        });
        System.out.println("排序后的列表(降序): " + list);

        // 交换索引为1和2的元素
        Collections.swap(list,1,2);
        System.out.println("交换索引位置值后的列表: " + list);
    }

在这里插入图片描述

查找、替换

Object max ( Collection ):根据元素的自然顺序,返回给定集合中的最大元素
Object max ( Collection ,comparator ):根据 comparator 指定的顺序,返回给定集合中的最大元素
Object min ( Collection ) 根据元素的自然顺序,返回给定集合中的最小元素 e
Object min ( Collection ,comparator )
int frequency ( Collection ,Object e ):返回指定集合中指定元素的出现次数
void copy ( List dest , List src ):将 src 中的内容复制到 dest 中
boolean replaceAll ( List list , Object oldVal , Object newVal ):使用新值替换 List 对象的所有旧值

这些我不再写案例,针对copy方法需要写案例强调:

List list = new ArrayList();
list.add(4);
list.add(2);
list.add(5);
list.add(8);
list.add(10);
List dest = new ArrayList();
// 将list中的内容复制到dest列表
Collections.copy(dest,list);
System.out.println(dest);

在这里插入图片描述
可以看到这种写法报错,我们看一下copy的源码:
在这里插入图片描述
可以看到当原列表中的元素个数多于目标列表中的元素时,就抛出了这个异常。
因此,我们创建的ArrayList要有元素内容,即dest.size>=src.size。
通常的处理写法如下:

List list = new ArrayList();
list.add(4);
list.add(2);
list.add(5);
list.add(8);
list.add(10);
List dest = new ArrayList(Arrays.asList(new Object[list.size()]));
System.out.println("copy前: " + dest);
// 将list中的内容复制到dest列表
Collections.copy(dest,list);
System.out.println("copy后: "+ dest);

在这里插入图片描述

同步控制

在这里插入图片描述
之前说Arraylist,set,HashMap等都是线程不安全的,Colloections工具类提供了这些方法使其同步,本质上就是用synchronized ()将原先的方法包了一下!通常我们不用线程安全的Vector和Hashtable。

结语

如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

🏰系列专栏
👉软磨 css
👉硬泡 javascript
👉flask框架快速入门

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

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

相关文章

python基础语法二

一、条件判断 1.1 if…else…语句 if…else… 字面意思就是 如果…否则… num 3 # 通过取模运算判断num是否能被2整除 if num % 2 0:print(str(num) "是一个偶数") else:print(str(num) "是一个奇数")注意两条print语句前面的缩进 1.2 elif 当你有三…

DP4809国产双通道耳机音频功率放大器芯片兼容替代LM4809

目录DP4809简介参考原理图DP4809芯片特性DP4809简介 DP4809是带关机功能的双通道耳机音频功率放大器芯片。在5V输入工作电压下,负载 16Ω时,平均输出功率为 140mW,总谐波失真 THDN 小于0.1%。当 SHUTDOWN 管脚电压为 GND 时,芯片…

小程序技术科普:运行机制安全机制

接触小程序有一段时间了,总得来说小程序开发门槛比较低,但其中基本的运行机制和原理还是要懂的。 了解小程序的由来 在小程序没有出来之前,最初微信WebView逐渐成为移动web重要入口,微信发布了一整套网页开发工具包,称…

Windows安装Pytorch+CUDA环境

文章目录前言创建Python虚拟环境安装CUDA安装Pytorch参考资料前言 本文将介绍使用 conda 创建Python虚拟环境,安装Pytorch和CUDA依赖。 创建Python虚拟环境 conda常用命令: conda create -n poppy_leo_tf python3.7 # 创建虚拟环境 conda activate p…

grafana关闭缓存

如果把Prometheus配置文件中的一些端口删除再重启服务,虽然Prometheus中更新了数据,但是grafana中的缓存会存在很长时间。 在官方文档[数据源管理|格拉法纳文档 (grafana.com)](https://grafana.com/docs/grafana/latest/administration/user-managemen…

Leetcode - 19 - 删除链表的倒数第 N 个结点

19. 删除链表的倒数第 N 个结点 题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1],…

【Dash搭建可视化网站】项目11:世界自杀率数据看板

世界自杀率数据看板1 项目效果图2 项目架构3 文件介绍和功能完善3.1 assets文件夹介绍3.2 app.py和index.py文件完善3.3 header.py文件完善3.4 api.py/api.ipynb文件完善3.4.1 获取Dropdown组件中的下拉标签信息3.4.2 获取Rangeslider组件中的时间区间3.4.3 获取Checklist组件中…

【 Vue3 + Vite + setup语法糖 + Pinia + VueRouter + Element Plus 第五篇】【完结篇附源码】

在第四篇中我们学习了mixin 公共方法封装, VueRouter 的使用以及配置权限路由,本期我们将讲述 Pinia,并使用 Pinia 和 Axios接口数据完成登录功能以权限路由改造 本期需要掌握的知识如下: Pinia 在项目中的使用及 持久化使用 Pinia 和 Axios 完成 登录 …

VIMA: General Robot Manipulation with Multimodal Prompts

Paper name VIMA: General Robot Manipulation with Multimodal Prompts Paper Reading Note URL: https://arxiv.org/pdf/2210.03094.pdf Project URL: https://vimalabs.github.io/ ICLR review URL: https://openreview.net/forum?idhzjQWjPC04A TL;DR ICLR 2023 在投…

动态 json 转化序表

【问题】Hi,I have a problem very similar tohttp://community.jaspersoft.com/questions/844023/need-help-looping-throu…,but I can’t just change the json file as done by the person asking that question.Any help would be greatly appreciated.----I am trying to…

深入学习IO多路复用select/poll/epoll实现原理

这里写自定义目录标题参考概述1. Linux 怎样处理网络请求1.1 阻塞 IO1.2 非阻塞 IO1.3 IO 多路复用2. 详解 select、poll、epoll 实现原理2.1 select 实现原理2.2 poll 实现原理3. 总结参考 深入学习IO多路复用select/poll/epoll实现原理 概述 Linux 服务器处理网络请求有三…

Java基础算法每日5道详解(4)

101. Symmetric Tree 对称树 Given the root of a binary tree, check whether it is a mirror of itself (i.e., symmetric around its center). Example 1: Input: root [1,2,2,3,4,4,3] Output: trueExample 2: Input: root [1,2,2,null,3,null,3] Output: falseleetco…

Linux常用命令——nl命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) nl 在Linux系统中计算文件内容行号 补充说明 nl命令读取 file 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。在输出中,n…

牛啊~ 长这么大还是头一次见24W字的SpringBoot从入门到实战文档

牛啊!长这么大还是头一次见24W字的SpringBoot从入门到实战文档! 不服还真不行,因为这份文档包含的内容是又全又新,而且还特别高深,从入门到实战的内容全都有!! 继续往下看: 本文档从…

EMQ设定ACL规则来控制客户端对主题的订阅权限

实现原理:EMQ可以通过制订ACL规则,校验客户端每个发布(Publish)/订阅(Subscribe) 的权限 本次采用的是EMQ Mnesia ACL。使用 EMQ X 内置的 Mnesia 数据库存储 ACL 规则 测试过程: 1本次实验环境,1个服务端(发布1个主…

NumPy一维数组、二维数组与Pandas的Series、DataFrame行列结构和横纵方向的统一说明

最近在这个问题上耽误了一些时间,原因是之前个人理解上出了一些偏差,又受到错误文章的误导,把这个问题搞复杂了,现在统一梳理一下。在展开之前,先明确说明的是:NumPy的二维数组与Pandas的DataFrame&#xf…

7、Javaweb_tomcatservlet

web相关概念 1. 软件架构 1. C/S:客户端/服务器端 2. B/S:浏览器/服务器端 2. 资源分类 1. 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源.静态资源可以直接被浏览器解析 * 如&am…

2023年最全盘点 | 16款跨平台应用程序开发框架

近年来小程序技术被微信及其生态应用带的如火如荼的,开发者的世界里,小程序的技术非常受关注,特别在流量承接及跨端开发方面,均受到不同规模的企业关注及积极实践。 2023年,小程序依然很火,但却有了一些不…

元宇宙产业委MCC|于佳宁:加密资产摆脱不了周期性规律

2022年,加密行业面临寒冬,加密货币市场总价值大量缩水,降逾1.45万亿美元,期间多家加密公司接连倒塌,引发市场连锁效应。 加密货币总市值降逾1.45万亿美元 根据CoinMarketCap数据,加密货币总市值(Total Cry…

【服务器数据恢复】某品牌DS系列服务器RAID5数据恢复案例

服务器数据恢复环境: 某单位一台某品牌DS系列服务器连接4个扩展柜; 50块磁盘组建两组RAID5,其中一组由27块磁盘组建的RAID5存放的是Oracle数据库文件; 上层一共划分11个卷。 服务器故障: 磁盘故障导致存放Oracle数据库…