对List集合中对象的某个属性进行排序
方法一
通过让实体类实现Comparable接口,并重写compareTo方法。
实体类
//lombok自动生成getset及toString
@Data
public class Entity implements Comparable<Entity>{
String name;
Integer age;
public Entity(String name,Integer age){
this.age=age;
this.name=name;
}
@Override
public int compareTo(Entity o) {
if (this.getAge()>o.getAge()){
return 1;
}else if (this.getAge()<o.getAge()){
return -1;
}else{
return 0;
}
}
}
执行
public class ListSort {
public static void main(String[] args) {
List<Entity> list=new ArrayList<>();
list.add(new Entity("张一",18));
list.add(new Entity("张二",25));
list.add(new Entity("张三",14));
list.add(new Entity("张四",19));
list.add(new Entity("张五",23));
Collections.sort(list);
list.forEach(x->System.out.println(x.toString()));
//console打印
//Entity{name='张三', age=14}
//Entity{name='张一', age=18}
//Entity{name='张四', age=19}
//Entity{name='张五', age=23}
//Entity{name='张二', age=25}
}
方法二
通过给sort方法传递一个比较器进行比对,我这里使用了lambda表达式,也可以new一个Comparator重写比较器。
实体类
//lombok自动生成getset及toString
@Data
public class Entity{
String name;
Integer age;
public Entity(String name,Integer age){
this.age=age;
this.name=name;
}
}
执行
public class ListSort {
public static void main(String[] args) {
List<Entity> list=new ArrayList<>();
list.add(new Entity("张一",18));
list.add(new Entity("张二",25));
list.add(new Entity("张三",14));
list.add(new Entity("张四",19));
list.add(new Entity("张五",23));
list.sort((o1,o2)->{
if (o1.getAge()>o2.getAge()){
return 1;
}else if(o1.getAge()<o2.getAge()){
return -1;
}else{
return 0;
}
});
list.forEach(x-> System.out.println(x.toString()));
/*
console打印
Entity{name='张三', age=14}
Entity{name='张一', age=18}
Entity{name='张四', age=19}
Entity{name='张五', age=23}
Entity{name='张二', age=25}
*/
}