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); // ...
随机推荐
- Python--day62--编辑出版社功能
1,Django项目主要用到的文件
- uva 562 Dividing coins(01背包)
Dividing coins It's commonly known that the Dutch have invented copper-wire. Two Dutch men were f ...
- H3C PPP协议的组成
- java 集合遍历输出方式
Iterator:迭代输出 一旦操作集合的遍历输出,首选Iterator接口; ListIterator:Iterator子接口,专门输出List中的元素; Enumeration:古老的输出方式,迭 ...
- H3C 环路避免机制五:抑制时间
- H3C 动态路由协议在协议栈中的位置
- linux 在 scull 中使用旗标
旗标机制给予 scull 一个工具, 可以在存取 scull_dev 数据结构时用来避免竞争情况. 但是正确使用这个工具是我们的责任. 正确使用加锁原语的关键是严密地指定要保护哪个 资源并且确认每个对 ...
- vue-learning:6-template-v-bind
绑定元素特性的指令v-bind 回顾下,从HTML元素的结构看,在VUE框架中,内容由插值{{ }}和v-html绑定:v-if和v-show可以控制元素的可见性:v-for可以用于批量生成列表元素. ...
- chrome查看当前网页cookie内容
按下F12,打开开发者工具 然后点开Application,在点击cookie左侧的小三角,选择网页,就可以看见对应的cookies了
- python数据分析经常使用的库
这个列表包含数据分析经常使用的Python库,供大家使用.1. 网络通用urllib -网络库(stdlib).requests -网络库.grab – 网络库(基于pycurl).pycurl – ...