Java系列之:Collections概述和使用
一、Collections概述和使用
Collections类的概述:
- 针对集合操作的工具类
Collections类的常用方法:
- public static <T extends Comparable<? super T>> void sort(List list):将指定的列表按升序排序
- public static void reverse(List<?> list):反转指定列表中元素的顺序
- public static void shuffle(List<?> list):使用默认的随机源随机排列指定的列表
import java.util.ArrayList;
import java.util.Collections;
public class CollectionsDemo {
public static void main(String[] args) {
//创建集合对象
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(30);
arrayList.add(40);
arrayList.add(60);
arrayList.add(50);
arrayList.add(20);
Collections.sort(arrayList);
// Collections.shuffle(arrayList);
//
// Collections.reverse(arrayList);
System.out.println(arrayList);
}
}
二、ArrayList存储学生对象并排序
需求:ArrayList存储学生对象,使用Collections对ArrayList进行排序。要求:按照数据库id从小到大排序,年龄相同时,按照数据库的名字顺序排序
思路:
- 定义数据库类
- 创建ArrayList集合对象
- 创建数据库对象
- 把数据库添加到集合
- 使用Collections对ArrayList集合排序
- 遍历集合
定义数据库类
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Dataset {
/* 数据库名称
*/
private String databaseName;
/**
* 数据库的描述
*/
private Integer databaseId;
}
遍历集合
import com.bigdata.plus.Dataset;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class CollectionsDemo {
public static void main(String[] args) {
//创建集合对象
ArrayList<Dataset> arrayList = new ArrayList<Dataset>();
Dataset dw = new Dataset("dw", 10);
Dataset optics = new Dataset("optics", 20);
Dataset product = new Dataset("product", 5);
Dataset dw1 = new Dataset("cw", 10);
arrayList.add(dw);
arrayList.add(optics);
arrayList.add(product);
arrayList.add(dw1);
//使用Collections对ArrayList集合排序
//sort(List<T> list, Comparator<? super T> c)
Collections.sort(arrayList, new Comparator<Dataset>() {
@Override
public int compare(Dataset o1, Dataset o2) {
//按照数据库id排序,id相同时,按照数据库名字排序
Integer num = o1.getDatabaseId() - o2.getDatabaseId();
Integer num2 = num==0?o1.getDatabaseName().compareTo(o2.getDatabaseName()):num;
return 2;
}
});
for(Dataset s : arrayList){
System.out.println(s.getDatabaseName() + " :" + s.getDatabaseId());
}
}
}