Collections类方法详解____(一)排序操作类

2023-05-16

        Collections类对于java集合的学习至关重要,这里简单收录了Collections类的基本方法和详解,下面先给出汇总列表

Collections类常用方法

分类方法用法

排序操作

sort(Collection);

sort(Collection,Comparator c)

自然排序

按比较器进行排序

reverse();

反转集合中的元素的顺序

shuffle(Collection)

对集合进行随机排序

swap(List list,int i,int j)

交换集合中索引 i 和 j 处的元素

rotate(List list,int m)

list中元素移位m,m>0右移,m<0左移,移除的数往前补位

查找和替换

binarySearch(Collection , Object)

查找集合中元素,返回索引

min(Collection)

min(Collection Comparator)

自然排序找最小值

比较器找最小值

max(Collection)

max(Collection Comparator)

自然排序找最大值

比较器找最大值

fill(List list,Object o)

将list集合中所有元素赋值为o

replaceAll(List list,Object old,Object new)

用new替代集合中的old,如果集合中存在old,则返回ture且替换,反之返回false

frequency(Collection, Object o)

返回集合中出现元素o的次数

indexOfSubList(List list,List subList)

查找subList集合在list集合中首次出现的索引数

lastindexOfSubList(List list,List subList)

查找subList集合在list集合中最后出现的索引数

同步控制

synchronizedSet

返回指定集合对象对应的同步对象,从而解决多线程并发访问集合时线程的安全问题。

使用该方法时,在遍历的时候,需要手动返回集合(synchronized(m){//迭代遍历语句}),m表示集合

synchronizedSortedSet

synchronizedList

synchronizedMap

synchronizeSortedMap

设置不可变集合

emptyXxx()

返回一个空的不可变的集合对象

singletonXxx()

返回一个值包含指定对象的不可变的集合对象

unmodifiableXxx()

返回指定集合对象的不可变视图

判断和赋值

disjoint(Collection<?> c1,Collection <?>c2)

判断两个集合有没有相同的元素,有就返回false,没有就返回true

addAll(Collection <? super T> c,T...a)

将指定元素添加到集合中

copy(List m,List n);

将n中元素赋值到m中,n中长度短时,可以赋值一段

checkedXxx()

查找这个集合是不是Xxx这个类型的

其它

asLifoQueue(Deque deque)

将双端队列(先进先出,队列满,则首段优先退出)表示为Lifo队列(LIFO表示后进先出)

list(Enumeration en)

返回一个数组,该列表包含给定Enumeration (枚举)返回的所有元素,以及将这些元素按枚举返回的顺序存储在ArrayList中的方法Java Collections list()方法与示例_cumtb2002的博客-CSDN博客

singleton(),singletonMap()、singletonList()

单列模式,只有一个元素

一、排序操作

 1、sort(Collection  array);  自然排序

           自然排序需要在引用类型中重写ComparaTo方法,

      sort(Collection array,Comparator c))

           比较器排序,需要重写比较器,需要重写comparator方法

package cn.cm;
import java.util.*;
//@Author
//@Date
//@Description
public class CollectionDome {
    public static void main(String[] args) {
        List<Student> list=new ArrayList<Student>();
        Student s1=new Student("张三","男",10);
        Student s2=new Student("李四","男",20);
        Student s3=new Student("王五","女",5);
        Collections.addAll(list,s1,s2,s3);
        System.out.println(list);
        //sort自然排序,需要重写ComparaTO方法
        Collections.sort(list);
        System.out.println(list);
        //sort比较器排序,重写compare方法
        Collections.sort(list , new Comparator<Student>() {
            @Override
            public int compare(Student o1 , Student o2) {
                int num=o1.getAge()-o2.getAge();
                int num2= num==0 ? o1.getName().compareTo(o2.getName()): num;
                    return num2;
            }
        });
        System.out.println(list);
    }
}

public class Student implements Comparable<Student>{
        private String name;
        private String geeder;
        private int Age;
//comparaTO方法重写
    @Override
    public int compareTo(Student o) {
        int num=this.getAge()-o.getAge();
        if (num==0){
            if(this.getName().equals(o.getAge())){
                return 0;
            }
        }else return num;
        return num;
    }
    public Student(String name , String geeder , int age) {
        this.name = name;
        this.geeder = geeder;
        Age = age;
    }
    public int getAge() { return Age;}
    public void setAge(int age) {Age = age;}
    public Student() {}
    public String getName() { return name;}
    public void setName(String name) {this.name = name;}
    public String getGeeder() {return geeder;}
    public void setGeeder(String geeder) {this.geeder = geeder;}
  //toString重写
    @Override
    public String toString() {
        return
                "name=" + name  +
                "geeder=" + geeder  +
                " Age=" + Age +
                "\n";
    }
}

2、reverse()   反转集合中的元素顺序

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
//@Author
//@Date
//@Description
public class CollectionDome2 {
    public static void main(String[] args) {
        List<Integer>  list=new ArrayList<Integer>();
        list.add(2);
        list.add(4);
        list.add(6);
        list.add(7);
        list.add(5);
        list.add(8);
        //原来顺序
        System.out.println(list);//输出[2, 4, 6, 7, 5, 8]
        //自然排序
        Collections.sort(list);
        System.out.println(list);//输出[2, 4, 5, 6, 7, 8]
        //反转排序
        Collections.reverse(list);
        System.out.println(list);//输出[8, 7, 6, 5, 4, 2]
    }
}

3、shuffle(Collection  array);

          对集合中的元素进行随机排序

Collection.shuffle(list);

System.out.print(list);// 运行后结果时[8, 2, 4, 7, 6, 5],

每次运行都会随机排序

4、swap(List list,int i,int j)

           交换集合list中索引为i,和 j 的元素。

如上面的list集合[2, 4, 6, 7, 5, 8]

swep(list,1,2);

System.out.print(list);// 运行后结果时[2, 6, 4, 7, 5, 8]

5、rotate(List  list,int m);

                 将集合list中的元素移位m,m大于0时右移,移动后末位移动到首位

                                                               m小于0左移,移动后首位移动到末位

如上面的list集合[2, 4, 6, 7, 5, 8]

swep(list,2);   //移动后集合[5,8,2,4,6,7];

swep(list,-1);//移动后集合[8,2,4,6,7,5]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Collections类方法详解____(一)排序操作类 的相关文章

  • 求大数的阶乘的位数:PKU :1423:Big Number

    题目描述 xff1a Description In many applications very large integers numbers are required Some of these applications are usin
  • 某人的ACM经历

    ACM经历总结 转帖 首先 xff0c 我想说的就是 xff0c 我是一个很普通的ACMer xff0c 高中没有参加过任何计算机和数学竞赛的经历 xff0c 也没有ben那样过人的天资 xff0c 努力至今也未能取得什么成绩 xff0c
  • PKU2051(优先队列求法)

    题意参见 xff1a http acm pku edu cn JudgeOnline problem id 61 2051 其实这个题目可以理解成os上的进程调度 xff1a 有一些进程 xff0c 每个进程有一个唯一的id和一个执行周期
  • 花钱要区分“投资”行为或“消费”行为(转载)

    在著名的美国第一学府哈佛大学 xff0c 经济学的第一堂课 xff0c 只教二个概念 第一概念 xff1a 花钱要区分 投资 行为或 消费 行为 xff1b 第二概念 xff1a 每月先储蓄30 工资 xff0c 剩下来才消费 有关专家做了
  • 时间管理也要区分“投资行为”与“消费行为”(转载)

    10 年前甲和乙是本科的同学 xff0c 在社会工作5 年后 xff0c 不约而同积蓄了30 万元人民币 5 年前 xff0c 他们都花掉了这30 万元 甲去通州购买了一套房 乙去买了一辆 奥迪 5 年后的今天 xff1a 甲的房子 xff
  • ZooKeeper的选举机制详解

    1 xff09 半数机制 xff1a 集群中半数以上机器存活 xff0c 集群可用 所以 Z ookeeper适合安装奇数台服务器 2 xff09 Zookeeper虽然在配置文件中并没有指定M aster和 S lave 但是 xff0c
  • 写了个幷查集的模板类...

    下面的概念介绍主要参考了 xff1a http www cnblogs com cherish yimi archive 2009 10 11 1580839 html xff0c 根据这个介绍 xff0c 自己写了个稍微通用一点的模板 x
  • PKU_1611(幷查集解法)

    题目来源 xff1a http poj org problem id 61 1611 采用幷查集的思路 xff0c 将同一个组的的学生合并为一个集合 xff0c 最后看那些学生跟student0属于同一个集合即可 下面是我的AC代码 xff
  • POJ2524(并查集)

    题目来源 xff1a http poj org problem id 61 2524 Description There are so many different religions in the world today that it
  • POJ_2236(并查集)

    题目 xff1a Description An earthquake takes place in Southeast Asia The ACM Asia Cooperated Medical team have set up a wire
  • 技术管理中的几个问题

    前几天跟朋友聊天时 xff0c 朋友说他刚刚从一家知名软件公司面试出来 xff0c 朋友去面试的是一家公司的技术管理岗位 xff0c 所以在面试的时候被问及的问题也偏重于技术管理方面的问题 xff0c 在与朋友的聊天中将这几个问题归纳了一下
  • 业务建模

    业务建模是OOAD的重要组成部分 xff0c 简单的说 xff0c 业务建模就对业务领域问题进行结构化的描述 这个描述将会直接指导最终生成的软件 xff0c 业务模型是否具有扩展性 xff0c 业务模型是否能够正确的反映需求 xff0c 都
  • 读书笔记之《软件工程思想》

    读书笔记 xff1a 林锐博士的 软件工程思想 首先申明 xff1a 由于才疏学浅 xff0c 很多感悟或许是不准确的 xff0c 甚至是错误的 但是我仍然坚持写下这篇读书心得 xff0c 原因有二 xff1a 首先 xff0c 想向大家推
  • C++开发常用工具(开发,辅助,编辑,建模,版本控制等)

    开发环境 xff1e Turbo c DOS时代c语言开发的经典工具 xff0c 目前适合两类人使用 xff1a c语言beginner xff08 尤其是学生一族 xff09 xff0c 具有怀旧情节的专业人士 xff1a xff09 x
  • 在Linux和Windows下搭建CVS服务器与CVS客户端的详细配置指南

    此文虽看上去写的很详细 xff0c 但有些地方却还模糊 xff0c 该简洁的地方没有简洁 xff0c 读者很容易迷糊 再留下一个ubuntu系统下配置cvs的文章 xff0c 比较简洁 http www yuanma org data 20
  • 高质量编程之编译警告级别

    前 言 作为程序员不但要会编程 xff0c 还要编好程 xff0c 即编写高质量的程序 评价程序质量的指标有很多 正确性 可靠性 有效性 可扩展性 可维护性 xff0c 用于保证软件质量的方法和技巧也非常多 本篇只讲述在编码阶段 xff0c
  • SSO - CAS-5.3.x服务端一些常规配置(登出操作后跳转制定页面;增加多个用户名密码)

    登出操作后跳转制定页面 首先跳转cas登出url时 xff0c 要加上 service 61 你的制定的页面 xff0c 如下 xff1a http localhost 8080 cas logout service 61 https ww
  • 大 学 十 年

    大 学 十 年 林锐 xff0c 1999年岁末 写此文使我很为难 xff0c 一是担心读者误以为我轻浮得现在就开始写自传 xff0c 二是担心朋友们误以为我得了绝症而早早留下遗作 不论是落俗套还是不落俗套地评价 xff0c 我在大学十年里
  • C/C++刁钻问题各个击破之序言

    是程序员都会写C C 43 43 程序 这是不是就说明C C 43 43 比较容易掌握呢 xff1f 非也 xff01 相比其他编程语言来说C C 43 43 要庞大得多 复杂得多 xff0c 要想用好C C 43 43 不是易事 我用C编
  • C/C++刁钻问题各个击破之位运算及其应用实例(1)

    位运算及其应用实例 1 摘要 位运算是C C 43 43 中的基本运算之一 xff0c 即便是这样 xff0c 它对大多数程序员来说是一个比较陌生的运算 大多数程序员很少使用位运算 本篇先简要介绍基本的位运算操作符及其用法 何时使用 xff

随机推荐

  • c_c++刁钻问题各个击破之位运算及其实例(2)

    位运算及其应用实例 2 摘要 上一篇 C C 43 43 刁钻问题各个击破之位运算及其应用实例 1 受到不少网友的关注 xff0c 这对我鼓励极大 xff0c 首先感谢这些网友 xff0c 特别要感谢几位回复的热心网友 上一篇中我对位运算进
  • 一步一步求解约瑟夫(Joseph)问题

    约瑟夫 Joseph 问题的解决方法 问题描述 最初Joseph问题是这样的 xff1a 有n个人 分别编号1 2 n 围成一圈 xff0c 这些人轮流数数 编号为1的人开始 xff0c 从1开始数 xff0c 当数到m的人就会被处决 接着
  • 给力!简单!易懂!位运算之求集合的所有子集

    摘要 刚刚完成一篇利用位运算高效地 巧妙地来解决求组合的博文 xff1a 非常给力 xff1a 位运算求组合 巧合的是 xff0c 我在 数据结构算法与应用 一书中看到一道课后题是 xff1a 用递归实现求一个集合的所有子集 受到题目的要求
  • 一种复杂度为O(n)的排序算法:位操作应用之位排序

    位运算应用篇 3 摘要 本篇仍然关注位操作的应用 xff0c 通过前面的两篇文章 非常给力 xff1a 位运算求组合 xff0c 简单 易懂 xff1a 位运算之求集合的所有子集 xff0c 我们已经略见了位操作之强大威力 如果说那两篇文章
  • 求砖拍:绝对深入剖析各种方法实现两个变量的交换

    本篇摘要 交换两个变量是非常古老的话题了 xff0c 然而本文绝对保证给你新鲜的感觉 xff01 本文涉及到最简单的 不用临时变量交换两个整数 还涉及到如果利用异或来实现两个指针 两个浮点数的交换 xff0c 要知道指针的浮点数是不允许直接
  • RAID制作全程图解 实际操作很简单

    说到磁盘阵列 xff08 RAID xff0c Redundant Array of Independent Disks xff09 xff0c 现在几乎成了网管员所必须掌握的一门技术之一 xff0c 特别是中小型企业 xff0c 因为磁盘
  • LSI 1064E RAID1和RAID0的配置步骤

    一 RAID1的步骤 xff1a 开机自检过程中出现ctrl 43 c提示 xff0c 按ctrl 43 c进入LSI Logic Config Utility v6 10 02 00 xff08 2006 09 27 xff09 1 在S
  • Mac下使用homebrew安装配置mysql

    步骤 xff1a 一 安装homebrew 二 安装mysql 三 配置自启动 四 修改mysql密码 五 创建my cnf配置文件 一 安装homebrew homebrew是macOS缺失的软件包管理器 xff0c 譬如可以下载mysq
  • 本地策略不允许您使用交互式登录

    此系统的本地策略不允许您采用交互式登录解决方法 如果计算机是一台不在域中的单独的Windows 2000计算机 xff0c 参考以下步骤 xff1a 1 启动故障计算机至登录状态 xff1b 2 登录到网络中的另外一台Windows 200
  • 用ipmitool管理服务器

    service ip mi start ip mitool I open shell 可以直接进入本地BMC shell ip mitool I lan H U shell 输入password 进入IP MI交互模式 当然这里也可以把sh
  • 命令行设置raid:MegaCli一些简单用法

    查看raid级别 xff1a MegaCli LDInfo Lall aALL 查看raid卡信息 xff1a MegaCli AdpAllInfo aALL 查看硬盘信息 xff1a MegaCli PDList aALL 查看电池信息
  • Cache写机制:Write-through与Write-back

    参考http en wikipedia org wiki Cache Writing Policies上的说明 xff0c Cache写机制分为write through和write back两种 Write through Write i
  • Windows 2008 部署服务之客户端安装

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • Windows 2008 部署服务之Windows 7 应答文件创建

    Windows 2008 部署服务之Windows 7 应答文件创建 作者 xff1a 罗国荣 日期 xff1a 2010 05 27 前面我们介绍了如何创建Windows XP的应答文件 xff0c 在这一章中我将给大家介绍如何使用Win
  • Windows 2008 部署服务之Windows 7 映像捕获

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • 部署Vista – 第1部分:理解Windows AIK

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 234142 最近在学习Windows
  • 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式

    标签 xff1a 部署Vista WINDOWS安装程序 映像 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto
  • 部署Vista – 第3部分:理解配置传送

    标签 xff1a 部署Vista 配置传送 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 无线信号的调制方式 OOK、ASK、FSK、GFSK

    一 OOK OOK On Off Keying 通断键控 如上图所示 xff0c Vm t 是需要发送的数字信号 xff0c Acos 2 fct 是未经过调制的载波 xff0c VAM t 是经过OOK调制的载波信号 OOK的调制原理就是
  • Collections类方法详解____(一)排序操作类

    Collections类对于java集合的学习至关重要 xff0c 这里简单收录了Collections类的基本方法和详解 xff0c 下面先给出汇总列表 Collections类常用方法 分类方法用法 排序操作 sort Collecti