目录
一、Collections工具类
-
Collections工具类概述:
解析:
1.Collections是在Java.util包下的对于集合操作的工具类。
2.该类是 Java 提供的一个操作 Set、List 和 Map 等集合的工具类。
3.由于该类的构造方法被私有化无法创建实例对象调用方法,所以Collections 类提供了许多操作集合的静态方法直接使用类名调用静态方法,借助这些静态方法可以实现集合元素的排序、查找替换和复制等操作。
-
Collections工具类中的常用静态方法
1.public static void shuffle(List<?> list) :作用: 打乱List集合中的元素顺序。
使用代码演示:
public class Test2 {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(2);
list.add(11);
list.add(35);
for (Integer s : list) {
System.out.println(s);
}
// 打乱顺序的方法
System.out.println("---------");
Collections.shuffle(list);
for (Integer s : list) {
System.out.println(s);
}
}
运行结果:
2.public static <T extends Comparable<? super T>> void sort(List<T> list) :作用:将集合中元素按照默认规则排序。
特别注意:在集合中的泛型定义为要排序的元素数据类型的类,在使用这方法时必须实现Comparable接口里的compareTo抽象方法,且该方法只能是List类型的集合才能使用。
//子类实现后,需要进行重写
返回值int,只关心正负或者0,不需要关系具体值
原始排序:this【我】 o【他】
如果要升序排序:我减他
如果要降序排序:他减我
// 因为返回值是int类型
如果比较的属性类型是浮点型:
this.score = 99.9 o.score = 99.5
if(this.score>o.score){
return 1;
}else if(this.score<0.score){
return -1;
}else{
return 0;
}
代码使用演示:
student学生类,分数按照降序,年龄升序排列
package com.feisi.work22;
public class Student implements Comparable<Student> {
String name;
int age;
float score;
public Student() {
}
public Student(String name, int age, float score) {
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", score=" + score +
'}';
}
@Override
public int compareTo(Student student) {
// 成绩降序 年龄升序
if (student.score > this.score) {
return 1;
} else if (student.score < this.score) {
return -1;
} else {
return this.age - student.age;
}
}
}
测试类:
package com.feisi.work22;
import java.util.ArrayList;
import java.util.Collections;
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
list.add(new Student("liusan",20,90.0F));
list.add(new Student("lisi",22,90.0F));
list.add(new Student("wangwu",20,99.0F));
list.add(new Student("sunliu",22,100.0F));
// 使用comparable排序
Collections.sort(list);
for (Student student : list) {
System.out.println(student);
}
}
}
运行结果