Collections

Java中集合都实现了Collection接口,那么针对集合一些特定的功能,有没有一个接口或类能够统一的集成一些集合必要的功能呢?当然能。它就是——Collections集合工具类。

一.常用方法

它内部方法很有多种,我们常用到的有如下四种方法:

1 批量添加成员到集合

public static <T> boolean addAll(Collection<? super T> c,T...elements)

将所有指定元素添加到指定 collection 中。

注:从方法参数中我们可以看出,它支持泛型参数。第一个参数可以是指定泛型及其父类,第二个参数是指定泛型的元素数组

2 打乱集合中元素顺序

public static void shuffle(List<?> list)

使用默认随机源对指定列表进行置换。

public static void shuffle(List<?> list,Random random)

使用指定的随机源对指定列表进行置换。

注:从方法参数中可以得知,该函数支持单参数和双参数;其中第二个参数是用来设置随机打乱规则的。

3 对集合进行排序

方法(1):

public static <T extends Comparable<? super T>> void sort(List<T> list)

根据元素的自然顺序 对指定列表按升序进行排序。

注意:如果利用此方法对自定义类的集合进行排序,需要在自定义类中继承

Comparable<T> 接口

并且重写

public int compareTo(O o) 方法

决定使用类中哪个参数为排序标准,则用哪个参数进行当前对象和参数对象的对比,比如利用对象中的data属性作为比较参考:

this.data - o.data ===> 升序

o.data - this.data ===> 降序

方法(2):

public static <T extends Comparable<? super T>> void sort(List<T> list, Comparator<? super T> c)

根据指定比较器产生的顺序对指定列表进行排序。

注意:如果利用此方法对自定义类进行排序,需要在第二个参数传入

Comparator 接口的实现类对象

依据此对象设定的规则排序。

4.代码:

Person类代码:

package com.lanyue.day18;

public class Person {

    public int age;
public String name; public Person(int age, String name) {
this.age = age;
this.name = name; } }

Stu类代码:

package com.lanyue.day18;

public class Stu implements Comparable<Stu> {

    public int age;
public String name; public Stu(int age, String name) {
this.age = age;
this.name = name;
} @Override
public int compareTo(Stu o) { return this.age - o.age;
}
}

运行类代码:

package com.lanyue.day18;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator; public class CollectionTool { public static void main(String[] args) { ArrayList<Stu> listOne = new ArrayList<>();
Stu[] stus = {new Stu(20,"逍遥"),new Stu(18,"蓝月"),new Stu(25,"天行")}; Collections.addAll(listOne,stus);
Collections.sort(listOne); Iterator<Stu> itOne = listOne.iterator();
while(itOne.hasNext()){ Stu stu = itOne.next();
System.out.println(stu.age + ":" + stu.name);
} ArrayList<Person> listTwo = new ArrayList<>();
Person[] peoples = {new Person(30,"小红"),new Person(50,"小李"),new Person(40,"小赵")};
Collections.addAll(listTwo,peoples); Collections.sort(listTwo, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
return o1.age - o2.age;
}
}); Iterator<Person> itTwo = listTwo.iterator();
while(itTwo.hasNext()){ Person person = itTwo.next();
System.out.println(person.age + ":" + person.name);
} }
}

程序截图:

java第十九天,Collections集合工具类的使用的更多相关文章

  1. Collections集合工具类,集合嵌套,集合综合案例斗地主

    1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...

  2. Collections集合工具类常用的方法

    java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...

  3. Collections集合工具类的常用方法

    Collections集合工具类的方法 addAll与shuffle import java.util.ArrayList; import java.util.Collections; /* - ja ...

  4. 可变参数和Collections集合工具类

    可变参数 /** * 可变参数:jdk1.5后出现的新特性 * 使用前期: * 当方法的参数列表数据类型已经确定的时候但是参数的个数不确定的时候就可以使用可变参数 * 使用格式:定义方法的时候使用 * ...

  5. Collections集合工具类的方法_sort(List)和sort(List,Comparator)方法

    Comparator比较器 我们还是先研究这个方法 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序. 不过这次 ...

  6. 可变参数和Collections集合工具类的方法_addAll&shuffle

    可变参数 可变参数:是JDK1.5之后出现的新特性 使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式:定义方法时使用 ~修饰符 返回值类型 方法名(数据类 ...

  7. Collections 集合工具类

    集合工具类  包括很多静态方法来操作集合list 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作. 1) 排序( ...

  8. [Guava学习笔记]Collections: 集合工具类

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  9. Collections集合工具类

    一.Collection与Collections Collection 是所有单列集合的根接口 Collection 是操作集合的工具类 二.Collections中常见的方法:(大都是static方 ...

随机推荐

  1. express模块中的req,res参数的常用属性方法

    express模块中的req,res参数的常用属性方法 const express = require('express'); const router = express.Router() rout ...

  2. C++基础 学习笔记之一:源代码的格式化

    C++基础 学习笔记之一:源代码的格式化 1. 源代码中的标记与空白 C++中的语句是以分号表示语句的结束.在C++中空格和回车以及制表符均为相同作用,即三者通常可以互相替代. 例如可以将一个简单的m ...

  3. 初创电商公司Drop的数据湖实践

    欢迎关注微信公众号:ApacheHudi 1. 引入 Drop是一个智能的奖励平台,旨在通过奖励会员在他们喜爱的品牌购物时获得的Drop积分来提升会员的生活,同时帮助他们发现与他们生活方式产生共鸣的新 ...

  4. maven如何安装oracle驱动jdbc的jar包

    一.因为oracle驱动的压缩包在maven官网上并没有提供,所以需要自己去手动下载. 二.下载安装步骤如下: (1)第一步:找到你本地的oracle驱动包所在位置: (2)在cmd中打开jar包所在 ...

  5. Pyinstaller通过spec文件打包py程序(多个py脚本)

    Pyinstaller pyinstaller是python的一个第三方模块,使用它可以将python程序打包为可执行文件,实现打包后的程序在没有python环境的机器上也可以运行.pyinstall ...

  6. Android开发:通过 webview 将网页打包成安卓应用

    商业转载请联系作者获得授权,非商业转载请注明出处. For commercial use, please contact the author for authorization. For non-c ...

  7. Journal of Proteome Research | Utilization of the Proteome Data Deposited in SRMAtlas for Validating the Existence of the Human Missing Proteins in GPM (解读人:梁嘉琪)

    文献名:Utilization of the Proteome Data Deposited in SRMAtlas for Validating the Existence of the Human ...

  8. redhat7安装

    ------------恢复内容开始------------ 新建虚拟机向导(自定义) 指定虚拟机安装位置,把他放在固态硬盘提升他的运行速度(不推荐,一般将位置定为非系统盘) 选择系统镜像文件 开机选 ...

  9. Magenta Demos Magenta 实战代码

    Magenta 实战代码 这个仓库包含了很多 Magenta 模型的实现.看 Magenta 库以及模型,看我们的主仓库:https://github.com/tensorflow/magenta A ...

  10. 怎样设计最优的卷积神经网络架构?| NAS原理剖析

    虽然,深度学习在近几年发展迅速.但是,关于如何才能设计出最优的卷积神经网络架构这个问题仍在处于探索阶段. 其中一大部分原因是因为当前那些取得成功的神经网络的架构设计原理仍然是一个黑盒.虽然我们有着关于 ...