集合的排序
List:
1.对象实现Comparable<>接口,重写comparaTo方法
2.用collections的sort(List list, comparator<? super E> comparator)方法
TreeSet:
1.对象实现Comparable<>接口,重写comparaTo方法
2.用构造方法TreeSet(comparator<? super E> comparator)
举例:
1.Coparator方法
步骤:1、创建Conparator对象
2、重写compare方法,自定义排序规则
3、利用集合的sort方法给集合排序
import java.util.ArrayList;
import java.util.Comparator;
public class dff {
public static void main(String[] args) {
Person p1=new Person("张三",18);
Person p2=new Person("李四",15);
ArrayList<Person> l=new ArrayList();
l.add(p1);
l.add(p2);
System.out.println(l);
Comparator com=new Comparator<Person>() {
@Override
public int compare(Person o1, Person o2) {
if(o2.getAge()<o1.getAge()){ //从小到大
return 1;
}
return -1;
}
};
l.sort(com); // 集合内的排序方法
System.out.println(l);
}
}
class Person {
private String name;
private int 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;
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
2.对象实现Comparable<>接口方法:
class Person implements Comparable<Person>{
private String name;
private int age;
@Override
public int compareTo(Person o) {
//this 与 o 比较
//返回的数据:负数this小/零相等/正数this大
if(this.age>o.age){
return 1;
}else if(this.age==o.age){ //自己根据需要定义
return 0;
}
return -1;
}
....构造函数和get,set函数
}
ArarayList<Person> a=new ArrayList<>();
Person p1=new Person("张三","18");
Person p2=new Person("李四","20");
a.add(p1);
a.add(p2); //集合已自动排序