在List集合中,使用集合中的泛型对象的属性进行排序:
例子:例如 List list = new ArrayList();
直接上代码:
一.创建一个java实体类
package cn.wisesign.utils;
public class Person {
private String name;
private Integer age;
public Person(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
二.写个main方法进行测试
package cn.wisesign.utils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
import java.util.List;
public class ListOrder {
public static void main(String[] args) {
List<Person> list = new ArrayList<Person>();
list.add(new Person("小明",20));
list.add(new Person("小红",17));
list.add(new Person("小王",21));
list.add(new Person("小李明",17));
System.out.println(list);
Collections.sort(list, new Comparator<Person>() {
//返回值int为排列顺序,依据int值从小到大排序
public int compare(Person o1, Person o2) {
Integer age1 = o1.getAge();
Integer age2 = o2.getAge();
/* if (age1 > age2) {
return -1;
}else if(age1==age2){
return 0;
}else{
return 1;
}*/
return age1-age2;
};
});
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println(list+"降序排序");
Collections.sort(list, new Comparator<Person>() {
//返回值int为排列顺序,依据int值从小到大排序
public int compare(Person o1, Person o2) {
Integer age1 = o1.getAge();
Integer age2 = o2.getAge();
/* if (age1 > age2) {
return 1;
}else if(age1==age2){
return 0;
}else{
return -1;
}*/
return age2-age1;
};
});
System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++");
System.out.println(list+"升序排序");
//使用函数式编程
list.sort(Comparator.comparing(Person::getAge)); //升序
list.sort(Comparator.comparing(Person::getName).reversed()); //降序
}
}
****注意点:排序的顺序是根据返回的int值从小到大进行排序的.升序和降序的主要不同点是返回值是谁减去谁
补充:可以使用in java8进行函数式编程
list.sort(Comparator.comparing(Person::getAge)); //升序
list.sort(Comparator.comparing(Person::getName).reversed()); //降序