comparator 用法
如果是第一次用到comparator 想必大家也是一脸懵逼
这里做个简单总结
如果你想对一个整形数组进行排序,比较其数值大小即可,
那么如果是一个对象list呢,这时引出comparator 来编写一个排序规则对其进行排序
代码示例如下
import java.util.*;
public class test {
public static void main(String[] args) {
List<Person> people =new ArrayList<>();
people.add(new Person(18,"小王",2000));
people.add(new Person(16,"小李",1000));
people.add(new Person(30,"老张",6000));
Collections.sort(people,new Comparator<Person>(){
@Override
public int compare(Person o1, Person o2) {
return o1.age-o2.age;
o1 表示第一个人,o2表示第二个人
这里的意思是 return 后面的值如果是负数,则不改变顺序 升序排列,反之则交换01,01的位置,降序排列
可能看到这里会有点蒙 ,试一下就好
假设 o1.age >o2.age o1.age-o2.age return值为正 交换二者位置 o2.age 小在前面
o1.age<o2.age o1.age-o2.age return值为负 位置不改变 o1.age 小在前面
}
});
System.out.println(people);
}
}
结果[Person{age=16, name='小李', salary=1000}, Person{age=18, name='小王', salary=2000}, Person{age=30, name='老张', salary=6000}]
总之
如果你想升序排列 o1.对象属性 -o2.对象属性 在前
降序排列 o2.对象属性 -o1.对象属性 在前
注意 这里的对象属性应支持 - 操作
对于String 调用String 的compare to 方法即好
@Override
public int compare(Person o1, Person o2) {
return o1.name.compareTo(o2.name);
}