Collections是一个包装类,其中包含有各种有关集合操作的静态多态方,比如可以作用在List和Set上,此类不能实例化。

排序
Integer[] array = new Integer[]{3, 10, 4, 0, 2};
List<Integer> integers = Arrays.asList(array);
Collections.sort(integers);
out.println(integers); //[0, 2, 3, 4, 10]

在这里借用了Arrays的asList方法,该方法可以将数组转成一个List。这里也只能对封装类型Integer数组调用asList方法,如果是int型的数组调用asList会出现其他问题。可以查考Arrays用法总结。

混排
out.println(integers); //[0, 2, 3, 4, 10]
Collections.shuffle(integers);
out.println(integers); //[0, 3, 10, 2, 4]

反转
out.println(integers); //[0, 3, 10, 2, 4]
Collections.reverse(integers);
out.println(integers); //[3, 0, 4, 2, 10]

填充(覆盖)元素
array = new Integer[]{3, 10, 4, 0, 2};
integers = Arrays.asList(array);
Collections.fill(integers, -1);
out.println(integers); //[-1, -1, -1, -1, -1]
out.println(Arrays.toString(array)); //[-1, -1, -1, -1, -1]

通过输出可以发现原数组的值也跟着发生了变化,因为是封装类型,所以Integer[]中和List<Integer>中的元素指向的是用一个Integer对象的地址,所以两个会一起变化。

替换元素
array = new Integer[]{3, 10, 4, 4, 4};
integers = Arrays.asList(array);
Collections.replaceAll(integers, 4, -4);
out.println(integers); //[3, 10, -4, -4, -4]

拷贝List
out.println(integers); //[3, 10, -4, -4, -4]
List<Integer> integersCopy = new ArrayList<>(); integersCopy.add(1);
integersCopy.add(1);
integersCopy.add(1);
integersCopy.add(1);
integersCopy.add(1);
integersCopy.add(1);
//如果不对List调用add方法,integerCopy还是空的,下面的copy方法会出错
Collections.copy(integersCopy, integers);
out.println(integersCopy); //[3, 10, -4, -4, -4, 1]

返回List中的最大值,最小值
array = new Integer[]{3, 10, 4, 0, 2};
integers = Arrays.asList(array);
out.println(integers);
out.println(Collections.min(integers)); //0
out.println(Collections.max(integers)); //10

源列表中第一次和最后一次出现指定列表的起始位置
Integer[] array1 = new Integer[]{3, 10, 4, 0, 2, 4, 0};
List integers1 = Arrays.asList(array1);
Integer[] array2 = new Integer[]{4, 0};
List integers2 = Arrays.asList(array2);
out.println(Collections.lastIndexOfSubList(integers1, integers2)); //5
out.println(Collections.indexOfSubList(integers1, integers2)); //2

循环移动
out.println(integers); [3, 10, 4, 0, 2]
Collections.rotate(integers, 1); //[2, 3, 10, 4, 0] 依次右移一位
out.println(integers);
Collections.rotate(integers, -2); //[10, 4, 0, 2, 3] 依次左移两位
out.println(integers);

二分查找,返回所在的下标。没有找到返回负的下标值。
array = new Integer[]{0, 2, 4, 10, 20};
integers = Arrays.asList(array);
out.println(Collections.binarySearch(integers, 4)); //2
out.println(Collections.binarySearch(integers, 9)); //-4

指定元素在集合中出现的次数
array = new Integer[]{0, 2, 4, 4, 20};
integers = Arrays.asList(array);
out.println(Collections.frequency(integers, 4)); //2

得到对象的n份拷贝
List<Integer> numbers = new ArrayList<>();
numbers.add(1);
List<List<Integer>> lists = Collections.nCopies(3, numbers);
out.println(lists); //[[1], [1], [1]]
numbers.add(2);
out.println(lists); //[[1, 2], [1, 2], [1, 2]]

Collections.nCopies(n, object)返回一个List对象,该List对象中含有对象object的n份拷贝,然而实际上列表中并没有存储n份拷贝,从中任意取出一个时,得到的是同一个object。
---------------------
作者:DaydreamerZz
来源:CSDN
原文:https://blog.csdn.net/zhzh402/article/details/79672092

Collections用法总结的更多相关文章

  1. Java开发中的高频Collections用法总结与Java平台实现源代码查看方式

    一生二,二生三,三生万物,基础永远是一个计算机人的立身之本,相信看到这篇文章的人一般都知道数据结构这门课程,要不也不会找到我的这篇文章.数据结构这门课程的分析奠定了工程师对各种平台中的容器类,集合类的 ...

  2. JAVA - Collections用法总结

    一生二,二生三,三生万物,基础永远是一个计算机人的立身之本.数据结构这门课程的分析奠定了工程师对各种平台中的容器类,集合类的理解基础,正如好多人所说的,如果你对某个平台的集合类理解的不透彻,很可能,你 ...

  3. 零基础学习java------day15--------collections用法,比较器,Set(TreeSet,TreeMap),异常

    1. Collections用法 Collections: 集合的工具类public static <T> void sort(List<T> list) 排序,升序publi ...

  4. DataBinding 访问 3

    MVVM中的Model 我们可以用任何POJO 作为 data binding 的 Model, 但是直接修改POJO对象,不能直接更新UI android的 dataBinding 模块 给提供了通 ...

  5. System.Collections.Generic的各容器类的用法

    演示System.Collections.Generic的各容器类的用法. 包括:Dictionary,KeyValuePair,SortedDic tionary,SortedList,HashSe ...

  6. Python collections 模块用法举例

    Python作为一个“内置电池”的编程语言,标准库里面拥有非常多好用的模块.比如今天想给大家 介绍的 collections 就是一个非常好的例子. 1.collections模块基本介绍 我们都知道 ...

  7. Comparable和Comparator的区别&Collections.sort的两种用法

    在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口.Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造 ...

  8. CSIC_716_20191118【常用模块的用法 Json、pickle、collections、openpyxl】

    序列化模块 序列化:将python或其他语言中的数据类型,转变成字符串类型. python中的八大数据类型回顾:int float str list tuple dict set bool 反序列化: ...

  9. collections中namedtuple的用法

    我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p = (1, 2) 但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的.这时,namedtuple就派上了用 ...

随机推荐

  1. alt和title的区别

    alt是html标签的属性,而title既是html标签,又是html属性. 在图像标签img中,除了常用的宽度width和高度height属性之外,还有两个比较重要并且也会用到的属性,就是alt和t ...

  2. 【日语】日语单词N3_N4_N5

    日语单词N3_N4_N5 单 词 讲 解 あ行单词 ああ:0[副]那样.那种 例句:ああ言うことはしないほうがいい.那样的事情最好不做. 電車の窓からごみを棄てているああ言うことはしないほうがいい. ...

  3. ios 日常开发常用宏定义

      #pragma mark - 字体.颜色相关 #define kFONT_SIZE(f) [UIFont systemFontOfSize:(f)] #define kFONT_BOLD_SIZE ...

  4. Jmeter学习笔记(六)——使用badboy录制脚本

    1.下载安装 可以去badboy官网下载地址:http://www.badboy.com.au,如果官网打不开也可以去网上搜索下载. 下载之后点击BadboyInstaller-2.2.5.exe普通 ...

  5. Hystrix原理与实战

    Hystrix原理与实战 背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务. 比如:订单服务调用商品服务,商品服务调用库存服务. 对于同步调用,当库存服务不可用时,商品 ...

  6. shell 函数的高级用法

    函数介绍 linux shell中的函数和大多数编程语言中的函数一样 将相似的任务或者代码封装到函数中,供其他地方调用 语法格式 如何调用函数 shell终端中定义函数 [root@master da ...

  7. 【SpringMVC】参数绑定

    一.概述 1.3 参数绑定过程 1.2 @RequestParam 二.自定义绑定使用属性编辑器 2.1 使用WebDataBinder(了解) 2.2 使用WebBindingInitializer ...

  8. FDD-LTE上下行带宽一样的,为什么上下行流量差别这么大

    转:https://zhidao.baidu.com/question/923940070377297579.html 虽然FD系统,上下行使用的带宽一样,但是上下行的信号编码效率完全不同.上行信号( ...

  9. ElasticSearch 连载二 中文分词

    ElasticSearch 连载二 中文分词 上一章ElasticSearch 连载一 基础入门 对Elastic的概念.安装以及基础操作进行了介绍. 那是不是有童鞋会有以下几个问题呢? 什么是中文分 ...

  10. Mongoose初使用总结

    连接mongoose mongoose连接数据库有两种方式 第一种: 'use strict'; const mongoose = require('mongoose'); mongoose.conn ...