java第十九天,Collections集合工具类的使用
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集合工具类的使用的更多相关文章
- Collections集合工具类,集合嵌套,集合综合案例斗地主
1 Collections集合工具类 (可以对比Arrays工具类共同记忆) 常用方法: 例: import java.util.ArrayList; import java.util.Collect ...
- Collections集合工具类常用的方法
java.utils.Collections //是集合工具类,用来对集合进行操作.部分方法如下: public static <T> boolean addAll(Collection& ...
- Collections集合工具类的常用方法
Collections集合工具类的方法 addAll与shuffle import java.util.ArrayList; import java.util.Collections; /* - ja ...
- 可变参数和Collections集合工具类
可变参数 /** * 可变参数:jdk1.5后出现的新特性 * 使用前期: * 当方法的参数列表数据类型已经确定的时候但是参数的个数不确定的时候就可以使用可变参数 * 使用格式:定义方法的时候使用 * ...
- Collections集合工具类的方法_sort(List)和sort(List,Comparator)方法
Comparator比较器 我们还是先研究这个方法 public static <T> void sort(List<T> list):将集合中元素按照默认规则排序. 不过这次 ...
- 可变参数和Collections集合工具类的方法_addAll&shuffle
可变参数 可变参数:是JDK1.5之后出现的新特性 使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式:定义方法时使用 ~修饰符 返回值类型 方法名(数据类 ...
- Collections 集合工具类
集合工具类 包括很多静态方法来操作集合list 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作. 1) 排序( ...
- [Guava学习笔记]Collections: 集合工具类
我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3861431.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...
- Collections集合工具类
一.Collection与Collections Collection 是所有单列集合的根接口 Collection 是操作集合的工具类 二.Collections中常见的方法:(大都是static方 ...
随机推荐
- el-select下拉加载(实现懒加载)
情况:项目出现了下拉数据量过大,出现页面卡死问题,反馈到我这:当时实现思路1.使用render函数去渲染下拉框 试了发现卡死情况依然存在,所以尝试方法2 2.使用原生js去添加下拉框的<opti ...
- EPX Studio产品功能介绍
EPX主要面向谁解决什么问题 EPX是什么? EPX基于计算机语言 EPX是利用基于Pascal的FastScript语言作为基础语言,在其中增加了许多函数与特性的一个扩展,将EPX组件本身融入到 ...
- EPX Studio开发平台简介
大家问我最多的问题就是“EPX 是什么?”“EPX 能够用来做什么?”“EPX 有什么优势?”“EPX 与其它开发平台的区别是什么?” 问题林林总总,总也回答不完,希望通过正文前面的这段文字,来简要回 ...
- npm和yarn使用
npm和yarn使用 他们都属于js包管理工具,都可以安装包或者模块yarn 是由facebook.google等联合开发推出的 区别: npm 下载包的话 比如npm install,它是按照包的排 ...
- [C++]请麻烦压一下定理的棺材板啦
从去年还在竞赛的时候2/12的原博客里搬运来的 不得不说之前取名真的很艺术qwq 今天开始上的数论课,让头发以肉眼可见的速度掉落emmm 没关系我头发多我不怕啦啦啦QwQ 其中最令人头疼的就是那些人名 ...
- DVWA Command Injection 解析
命令注入,即 Command Injection.是指通过提交恶意构造的参数破坏命令语句结构,从而达到执行恶意命令的目的. 在Web应用中,有时候会用到一些命令执行的函数,如php中system.ex ...
- JavaScript 模式》读书笔记(4)— 函数2
这篇,我们仍旧继续学习函数. 二.回调模式 函数都是对象,这表示它们可以作为参数传递给其它函数. function writeCode(callback) { // 执行一些事务... callbac ...
- Python进制的转换
Python整数能够以十六进制,八进制和二进制来编写,作为一般以10位基数的十进制计数法的补充. 一: 上面三种进制的常用表示 >>> 0o1, 0o20, 0o377 # 八进制 ...
- python环境变量忘记配置
Python安装没有勾选配置环境变量安装 解决方法一: 于是,便用安装包卸载后重新安装. 重新安装勾选 安装成功 方法二: 配置环境变量 A.右键点击“我的电脑”,点击“属性”: B.在弹出的界面中点 ...
- [模拟] Codefroces 1175B Catch Overflow!
题目:http://codeforces.com/contest/1175/problem/B B. Catch Overflow! time limit per test 1 second memo ...