Java 集合的工具类Collections的常用方法
Collections类
java.utils.Collections是集合工具类,用来对集合进行操作。
Collections类的常用方法
这里介绍四个常用方法:
addAll(Collection<T> c, T ... elements)
shuffle(List<?> list)
sort(List<r> list)
sort(List<T> list, Comparator<? super T>)
public static <T> boolean adda1l(Collection<T> c, T ... elements)往集合中添加一些元素。 public static void shuff1e(List<?> 1ist)打乱顺序:打乱集合顺序。 public static <T> void sort(List<r> 1ist):将集合中元素按照默认规则排序。 public static <T> void sort(List<T> list, Comparator<? super T>):将集合中元素按照指定规则排序。
addAll(Collection<T> c, T ... elements)方法
参数说明:
Collection<T> c:是要被添加元素的集合
T ... elements:可变参数,是要给集合添加的元素
方法功能:
往集合中添加一些元素
例子:
import java.util.Collections;
import java.util.HashSet; public class DemoCollections {
public static void main(String[] args) {
// 创建一个HashSet集合
HashSet<String> hashSet = new HashSet<>(); // 调用Collections类的静态方法addAll,往集合hashSet中添加多个元素
Collections.addAll(hashSet, "a", "b", "c", "d", "e", "f", "g"); // 输出HashSet集合
System.out.println(hashSet);
}
}
输出结果:
[a, b, c, d, e, f, g]
shuffle(List<?> list)方法
参数说明:
List<?> list:表示传入的集合,即该方法传入的参数是一个集合
方法功能:
打乱集合的顺序。
例子:
import java.util.ArrayList;
import java.util.Collections; public class DemoCollectionsShuffle {
public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<String> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素
Collections.addAll(arrayList, "A", "B", "C", "D", "E", "F", "G");
System.out.println("没有打乱时的集合:" + arrayList); // 调用Collections类的静态方法shuffle,将集合arrayList里面的元素顺序打乱
Collections.shuffle(arrayList);
System.out.println("打乱以后的集合:" + arrayList);
}
}
输出结果:
没有打乱时的集合:[A, B, C, D, E, F, G]
打乱以后的集合:[D, B, C, E, A, G, F]
sort(List<r> list)方法
参数说明:
List<?> list:表示传入的集合,即该方法传入的参数是一个集合
方法功能:
对集合进行排序(默认为升序排序)
例子:
import java.util.ArrayList;
import java.util.Collections; public class Demo01CollectionsSort {
public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<Integer> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素
Collections.addAll(arrayList, 1, 2, 10, 9, 8);
System.out.println("没有排序时的集合:" + arrayList); // 调用sort()方法,将集合arrayList里面的元素进行排序
Collections.sort(arrayList);
System.out.println("排序后的集合:" + arrayList);
}
}
输出结果:
没有排序时的集合:[1, 2, 10, 9, 8]
排序后的集合:[1, 2, 8, 9, 10]
sort(List<T> list, Comparator<? super T>)方法
首先,说明一下,这个方法仅做了解即可,学习过程中通常都是默认使用sort(List<T> list)方法的。
参数说明:
List<?> list:表示传入的集合,即该方法传入的第一个参数是一个集合
Comparator<? super T>:这是一个排序规则,自定义(覆盖重写该接口的排序方法)
方法功能:
对集合进行排序(默认为升序排序)
例子:
// 随便创建一个Person类
public class Person {
private String name;
private int age; public Person() {
} public Person(String name, int age) {
this.name = name;
this.age = age;
} @Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}
自己定义一个排序规则进行测试:
// 举例
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator; public class Demo02CollectionsSort { public static void main(String[] args) {
// 创建一个ArrayList集合
ArrayList<Person> arrayList = new ArrayList<>(); // 往arrayList集合中添加元素,集合存储的数据的类型是自定义类型(Person)
Collections.addAll(
arrayList,
new Person("LeeHua", 20),
new Person("WanTao", 18),
new Person("XiaMin", 22),
new Person("HonMao", 22)
);
System.out.println("没有排序时的集合:" + arrayList); // 自定义排序规则,对arrayList集合进行排序
Collections.sort(arrayList, new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
// 年龄相等,按照名字排序
while (o1.getAge() - o2.getAge() == 0) {
if (o1.getName().length() > o2.getName().length()) {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return 1;
}
else if (o1.getName().length() < o2.getName().length()) {
for (int i = 0; i < o1.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return - 1;
}
else {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
return 0;
}
}
// 年龄不相等,按照年龄排序
return o1.getAge() - o2.getAge();
}
});
System.out.println("排序以后的集合:" + arrayList);
}
}
输出结果:
没有排序时的集合:[Person{name='LeeHua', age=20}, Person{name='WanTao', age=18}, Person{name='XiaMin', age=22}, Person{name='HonMao', age=22}]
排序以后的集合:[Person{name='WanTao', age=18}, Person{name='LeeHua', age=20}, Person{name='HonMao', age=22}, Person{name='XiaMin', age=22}]
排序规则代码的理解:
new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
// 首先判断年龄是否相等
while (o1.getAge() - o2.getAge() == 0) {
// 如果this年龄 == object年龄,那么就按名字的字母(char code)比较
// 按照名字的每个字母来比较
if (o1.getName().length() > o2.getName().length()) {
// o1的名字长度 > o2的名字长度
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o2的名字的所有字母,按顺序都与o1的名字对应位数的字母相等,字母长度大的排后,即o1排后
return 1;
}
// o1的名字长度 < o2的名字长度
else if (o1.getName().length() < o2.getName().length()) {
for (int i = 0; i < o1.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o1的名字的所有字母,按顺序都与o2的名字对应位数的字母相等,字母长度大的排后,即o2排后
return - 1;
}
// o1的名字长度 = o2的名字长度
else {
for (int i = 0; i < o2.getName().length(); i++) {
if (o1.getName().charAt(i) - o2.getName().charAt(i) != 0 ) {
return o1.getName().charAt(i) - o2.getName().charAt(i);
}
}
// 假如o1的名字的所有字母,按顺序都与o2的名字对应位数的字母相等,那么按照arrayList集合的添加顺序排序
return 0;
}
}
// 年龄不相等,按照年龄排序
return o1.getAge() - o2.getAge();
}
}
Java 集合的工具类Collections的常用方法的更多相关文章
- java集合框架工具类Collections,集合的操作
1 import java.util.*; public class asList { public static void main(String args[]) { // int arr[] = ...
- 操作集合的工具类Collections
1 操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操 ...
- Java集合----Collection工具类
Collections 工具类 Collections 是一个操作 Set.List 和 Map 等集合的工具类 Collections 中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了 ...
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
- java基础37 集合框架工具类Collections和数组操作工具类Arrays
一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...
- java之操作集合的工具类--Collections
Collections是一个操作Set.List和Map等集合的工具类. Collections中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控 ...
- JAVA基础——Arrays工具类十大常用方法
Arrays工具类十大常用方法 原文链接:http://blog.csdn.net/renfufei/article/details/16829457 0. 声明数组 String[] aArray ...
- Java-集合第六篇操作集合的工具类Collections
1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...
- Java 集合框架工具类
Collections Arrays Collections 集合框架的工具类, 里面的方法都是静态的, 可以直接使用类名调用 常用方法 1. sort(List<T> list); // ...
随机推荐
- 学习java注意的地方
Java语言拼写上严格区分大小写: 一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类: 若源文件中包括了public类,源文件必须和该public类同名: 一个 ...
- nginx 301 将不带www域名,重定向到www域名
// nginx 官方推荐 server { listen 80; server_name example.org; return 301 http://www.example.org$request ...
- Python--day25--面向对象之封装
狭义上的封装的例子:(例1)Python就只有两种类型:公有和私有,没有Java中说的那种保护类型 例2: 例3:正常的方法调用私有方法 封装总结:
- joinColumns和inverseJoinColumns的用法
最近在工作中使用springside,里面用到了hibernate的多对多 一开始我在配置department(部门表)和menu(栏目表)的时候,这样写的. Department实体类中的getMe ...
- H3C 启动包过滤防火墙功能
- [C++] 检查随机内存溢出
C++程序的随机内存溢出是非常难处理的,windows提供了一些工具来缓解这个问题. windows debuger提供的Global Flags可以设置"enable heap tail ...
- P1099 双连击
题目描述 我们假设一个二位整数 \(N(10 \le N \le 99)\) ,它的十位上的数字是 \(A\) ,个位上的数字是 \(B\) ,如果 \(A\) 和 \(B\) 的比例关系满足 \(A ...
- linux scull 函数open 方法
open 方法提供给驱动来做任何的初始化来准备后续的操作. 在大部分驱动中, open 应当 进行下面的工作: 检查设备特定的错误(例如设备没准备好, 或者类似的硬件错误 如果它第一次打开, 初始化设 ...
- es6—变量的解构赋值
数组的解构赋值 ]]]]]]] = []}} = {}} = {}})]: first]: last} = arr} = {}) {}))}))}) {}))}))].]]]])})] }}} = { ...
- Github上的英文解释
1.AFAIK: As far as I know. 据我所知 2.SPOF: Single point of failure. 单节点崩溃 3.ASAP: As soon as possible. ...