package com.itheima.demo04.Collections;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/*
java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:
public static <T> void sort(List<T> list,Comparator<? super T> ):将集合中元素按照指定规则排序
Comparator和Comparable的区别
Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则conpareTo方法
Comparator:相当于找一个第三方的裁判,比较两个
*/
public class Demo03Sort {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
System.out.println(list);
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
System.out.println(list);
ArrayList<Student> list01 = new ArrayList<>();
list01.add(new Student("zhangsan", 17));
list01.add(new Student("lisi", 20));
list01.add(new Student("wangwu", 14));
list01.add(new Student("wangwu", 17));
System.out.println(list01);
Collections.sort(list01, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
//当年龄相同时,哪个先进入集合,哪个就在前面
// return o1.getAge()-o2.getAge();//[Student{name='wangwu', age=14}, Student{name='zhangsan', age=17}, Student{name='wangwu', age=17}, Student{name='lisi', age=20}]
int result = o1.getAge() - o2.getAge();
//如果年龄相同,比较名字
if (result == 0) {
return o1.getName().charAt(0) - o2.getName().charAt(0);
} else {
return result;
}
}
});
System.out.println(list01);
}
}
class Student {
private String name;
private int age;
public Student() {
ArrayList<Integer> list = new ArrayList<>();
list.add(1);
list.add(3);
list.add(2);
}
@Override
public String toString() {
return "Student{" +
"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;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
}
05_10_Collections.sort使用Comparator排序
最新推荐文章于 2023-12-17 11:28:30 发布