java中的Collections工具类

        Collections类是java中提供的一个工具类,它和接口Collection乍一看非常相像,但是二者的区别是非常大的,最明显的就是它们一个是类,而另一个是接口了。Collections工具类的作用是对Set 、Map、 List这些容器提供辅助方法来对容器中的元素进行排序、填充、查找等操作。

        在Collecctions工具类中的方法是极多的,三言两语难以说尽,因此这里我们只简单介绍几个常用的方法,对Collections工具类有个认识即可,对于不常用的方法,用到时进行简单类比即可。Collections工具类中的所有方法均为静态方法,因此在使用时只需要通过类名就可以对对应的方法进行进行调用。在Collections类中,我们常用的方法有sort、shufle、reverse、fill以及binnarySearch。这几个方法的具体作用如下:

        void sort(List):对List容器内的元素进行排序,排序规则按照升序;

        void shufle(List):对List容器内的元素进行随机排列;

        void reverse(List):对List容器内的元素进行逆序排列;

        void fill(List):用一个特定的对象重写整个List容器;

        int binnarySearch(List,Object):对于顺序的List容器,采用折半查找的方法查找指定对象,并返回该对象的索引。

        以上介绍的几个方法都是对List接口来说的因此在它们的参数中都需要传入一个List类型的容器。接下来我们演示这几个方法当中的前两个来说命Collections类的使用,其余的方法除了功能不同,用法是基本一样的。首先创建一个CollectionsTest类,在这个类中实例化一个List型容器list。容器list的泛型类型为String,因此添加的元素只能是String类型。将a,b,c,d乱序添加进容器list中,并遍历容器list中的元素,用作对照。

        由于Collections类中的方法均为静态方法,因此使用当中用的方法直接通过类名调用即可。通过Colkections调用sort方法,并将list作为参数传入。当我们再次遍历容器list中的元素是会发现元素的顺序从c、b、d、a变成了a、b、c、d。这就是sort的排序效果。

        需要说明的是,上面的这个排序操作是按照默认排序规则来进行排序的。在java中查找Collections类中的方法,会发现sort方法还有重载的方法,这个方法需要传入一个比较器作为参数,这时排序就是按照定义的比较器的排序规则来进行的了。就像在以下的演示代码中,定义的另一个List型的容器li一样,传入比较器StudentCoparator,它的怕排列顺序就是按照比比较器定义的排序来排列的。

        接下来说一下,shufle方法。这个方法的作用是对List型的容器进行随机排序。简单来说就是洗牌原理,将一副扑克牌进行洗牌操作就是将其其中的牌打乱,进行随机分配。比如在演示代码中对容器li使用shufle方法,这个对它进行遍历,可以发现程序每运行一次它打印出来的顺序都不一定是相同的,也就是随机的。值得说明的一点是,这个方法仍然有重载的方法,重载方法中需要传入一个随机对象,这个对象可以是默认的,也可以是添加了seed的。

        Random(seed)的使用方法如下:

  1. 创建实例:你可以使用给定的seed创建一个Random对象,例如 Random random = new Random(seed);
  2. 生成随机数:一旦有了Random对象,你可以调用其各种方法来生成不同范围的随机整数或浮点数,如nextInt()nextDouble()等。
  3. 设置种子:如果不提供seed,则默认使用系统时间作为种子,如果程序需要保证每次运行生成的随机数序列一致,可以明确指定seed值。

上面的这个描述可能比较抽象, 难点在于理解seed的作用。这里可以这样理解,如果我同时创建了两个Random对象,如果构造方法中的seed的值是一样的,那么这两个对象产生的随机数列也是一样的,这就是seed的作用。

package com.container.demo;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class CollectionsTest {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("c");
        list.add("b");
        list.add("d");
        list.add("a");
        for (String str:list
             ) {
            System.out.println(str);
        }
        System.out.println("_________________________");
        //通过Collections类进行排序
        Collections.sort(list);
        for (String str:list
             ) {
            System.out.println(str);
        }
        System.out.println("______________________________");
        List<Student> li = new ArrayList<>();
        Student s1 = new Student ("linyi",20);
        Student s2 = new Student("linling",21);
        Student s3 = new Student("liner",21);
        li.add(s1);
        li.add(s2);
        li.add(s3);
        for (Student stu:li
             ) {
            System.out.println(stu);
        }
        System.out.println("________________________");
        Collections.sort(li,new StudentComparator());
        for (Student stu:li
             ) {
            System.out.println(stu);
        }
        System.out.println("____________________________");
        Collections.shuffle(li);
        for (Student stu:li
             ) {
            System.out.println(stu);
        }
        System.out.println("________________________");
        Collections.shuffle(li,new Random());
        for (Student stu:li
             ) {
            System.out.println(stu);
        }


    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI时代的风口,中小企业也不能错过

文&#xff5c;白 鸽 编&#xff5c;周效敬 这些场景&#xff0c;对你来说或许并不陌生&#xff1a; 在医院的大屏上&#xff0c;一个医生模样的数字人在做医疗知识科普&#xff1b;在抖音的直播间里&#xff0c;一个真人模样的数字人在线上直播带货&#xff0c;24小时无休无…

SQLite、MySQL、PostgreSQL 3个关系数据库之间优缺点对比

引言 关系数据模型以行和列的表格形式组织数据&#xff0c;在数据库管理工具中占主导地位。今天还有其他数据模型&#xff0c;包括NoSQL和NewSQL&#xff0c;但是关系数据库管理系统&#xff08;RDBMS&#xff09;仍然占主导地位用于存储和管理全球数据。 本文比较了三种实现最…

【金融研究】6月,对冲基金狂卖美国科技股 短期乐观,长期悲观?“油价最大空头”花旗:明年跌到60

科技股新高的背后&#xff0c;是对冲基金与散户投资者的分歧&#xff0c;对冲基金正在向散户投资者出售创纪录数量的科技/半导体/美股“七姐妹”股票。 对冲基金狂卖美国科技股 在五大明星科技股&#xff08;苹果、亚马逊、微软、英伟达、谷歌&#xff09;轮番创下历史新高的…

CSS基础学习记录(6)

目录 1、从最基本的页面开始 2、添加图像/浮层部分 3、位置调整 4、添加动效 4.1、添加浮层动效 4.2、添加背景动画 根据前面css的学习&#xff0c;本篇来实践下前面学习的知识&#xff0c;主要实现如下这样的效果。 下面我们一步步实现上面的效果。 1、从最基本的页面开…

uniapp开发H5、手机APP、微信小程序 可拖动菜单按钮

ml-fab 插件地址&#xff1a;https://ext.dcloud.net.cn/plugin?id18909 1、可拖拽悬浮按钮 ml-fab&#xff0c;支持自定义插槽&#xff0c;点击可展开一个图标按钮菜单&#xff0c;可随意拖拽。 2、支持自定义插槽&#xff0c;可实现自定义配置。 3、操作简单易上手。 ml-f…

锐捷AP从其它项目拆下,怎么也加入不了到现在这个网络里来

环境: AP 产品型号:RG-RAP2260G 问题描述: 锐捷AP从其它项目拆下,怎么也加入不了到现在这个网络里来,现网是WIFI5的,想把2260G用来升级,恢复出厂设置后,插上网线,现网找不到这个AP 解决方案: 1.通电重置AP后,连接AP WiFi进入管理页面,要求先快速配置 2.开始配置…

【计算机网络篇】数据链路层(12)交换机式以太网___以太网交换机

文章目录 &#x1f354;交换式以太网&#x1f6f8;以太网交换机 &#x1f354;交换式以太网 仅使用交换机&#xff08;不使用集线器&#xff09;的以太网就是交换式以太网 &#x1f6f8;以太网交换机 以太网交换机本质上就是一个多接口的网桥&#xff1a; 交换机的每个接口…

1.回溯算法.基础

1.回溯算法 基础知识题目1.组合2.组合-优化3.组合总和|||4.电话号码和字母组合5.组合总和6.组合总和II7.分割回文串8.复原IP地址 基础知识 回溯法也可以叫做回溯搜索法&#xff0c;它是一种搜索的方式。回溯是递归的副产品&#xff0c;只要有递归就会有回溯 因为回溯的本质是穷…

品牌窜货治理:维护市场秩序与品牌健康的关键

品牌在各个渠道通常都会设定相应的销售规则&#xff0c;其中常见的便是区域保护制度&#xff0c;比如 A 地区的货物只能在 A 地区销售&#xff0c;各区域的产品价格和销售策略均有所不同&#xff0c;因此 A 地区的货物不能流向 B 地区&#xff0c;否则就被称为窜货。 窜货现象不…

以数治税时代来临,企业如何应对?

全电发票是数字经济时代发票的新形态&#xff0c;顺应了数字经济潮流。现如今&#xff0c;国家正全力推动行业数字化进程&#xff0c;预计&#xff0c;2025年将基本实现发票全领域、全环节、全要素电子化&#xff0c;实现税务执法、服务、监管与大数据智能化应用深度融合、高效…

车载信息安全:技术要求,实验方法

目录 1. 技术要求 1.1 硬件安全要求 1.2 通信协议与接口安全要求 1.2.1 对外通信安全 1.2.2 内部通信安全 1.2.3 通信接口安全 1.3 操作系统安全要求 1.3.1 操作系统安全配置 1.3.2 安全调用控制能力 1.3.3 操作系统安全启动 1.3.4 操作系统更新 1.3.5 操作系统隔离…

基于大语言模型的多意图增强搜索

随着人工智能技术的蓬勃发展&#xff0c;大语言模型&#xff08;LLM&#xff09;如Claude等在多个领域展现出了卓越的能力。如何利用这些模型的语义分析能力&#xff0c;优化传统业务系统中的搜索性能是个很好的研究方向。 在传统业务系统中&#xff0c;数据匹配和检索常常面临…

综合管廊挂轨巡检机器人:安全高效管理的新力量

综合管廊、电力管廊等作为承载着各类电缆和管线的重要通道&#xff0c;管廊的安全和可靠性对城市的运行至关重要。传统人工巡检效率低、劳动强度大&#xff0c;且可能存在巡检不及时、不准确等问题。难以满足日益复杂和庞大的管廊系统的监控需求。为了解决这些问题&#xff0c;…

Vue3学习笔记<->创建第一个vue项目

新建一个项目目录 找一个盘新建一个目录&#xff0c;我这里在D盘创建一个vuedemo目录作为项目存放的目录。使用idea打开目录。   单击ieda底部的按钮“Terminal”&#xff0c;打开命令行窗口&#xff0c;如果命令行窗口当前目录不是“vuedemo”&#xff0c;就切换到“vuedem…

纳米硅(SiNP)可用于制造锂离子电池 纳米硅粉为其代表产品

纳米硅&#xff08;SiNP&#xff09;可用于制造锂离子电池 纳米硅粉为其代表产品 纳米硅&#xff08;SiNP&#xff09;指尺寸在纳米尺度范围内的硅颗粒。纳米硅具有光吸收谱宽、表面活性高、比表面积大、机械强度高、电学性能好等优势&#xff0c;在石油化工、建筑工程、电子电…

Data Grouping

分组功能将具有相同列值的行组合到相同的数据组中。Grid View 和 Banded Grid Views的支持。 GridControl-Grid View 应用分组 数据分组最初在数据网格中启用&#xff08;默认设置&#xff09;。要按列对数据进行分组&#xff0c;请将列标题拖动到分组面板中。另一个选项是右…

求出某空间曲面下的体积

求出某空间曲面下的体积 flyfish 用小长方体的体积和来逼近该体积 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation# 定义函数 f(x, y) def f(x, y):return np.sin(np.pi * x) * np.sin(np.pi * y)# 创建网格 x np.linspac…

avi格式视频提示无法播放错误,怎么解决?

AVI视频属于一种无损质量的视频格式&#xff0c;一般来说是兼容Windows系统播放的。播不了可能是由以下原因导致的&#xff1a; 1.文件损坏&#xff1a;可能是原文件在转码压缩的过程中操作不当&#xff0c;导致数据丢失、文件损坏。 2.播放器格式不支持&#xff1a;可能系统的…

使用MappingJackson2HttpMessageConverter把java对象转换成json字符串

使用MappingJackson2HttpMessageConverter把java对象转换成json字符串 如下图&#xff1a; 运行结果如下图&#xff1a; 代码如下&#xff1a; /*** author 望轩* createDate 2024/6/27 15:27* 把java对象转换成json字符串*/ public class EntityToJson {public static voi…

web前端-CSS

CSS CSS概述: CSS是Cascading Style Sheets&#xff08;级联样式表&#xff09;,是一种样式表语言,用于控制网页布局,外观(比如背景图片,图片高度,文本颜色,文本字体,高级定位等等) 可将页面的内容与样式分离开,样式放于单独的.css文件或者HTML某处 CSS是网页样式,HTML是网页…