1、首先构造一个实体以便示例使用
public classDeveloper {privateString name;privateBigDecimal salary;private intage;public Developer(String name, BigDecimal salary, intage) {this.name =name;this.salary =salary;this.age =age;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}publicBigDecimal getSalary() {returnsalary;
}public voidsetSalary(BigDecimal salary) {this.salary =salary;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}
@OverridepublicString toString() {return "Developer{" +
"name='" + name + '\'' +
", salary=" + salary +
", age=" + age +
'}';
}
}
2、在Java8之前排序的方式
public classTestSorting {public static voidmain(String[] args) {
List listDevs =getDevelopers();
Collections.sort(listDevs,new Comparator() {
@Overridepublic intcompare(Developer o1, Developer o2) {return o1.getAge() -o2.getAge();
}
});for(Developer developer : listDevs) {
System.out.println(developer);
}
}private static ListgetDevelopers() {
List result = new ArrayList();
result.add(new Developer("mkyong", new BigDecimal("70000"), 33));
result.add(new Developer("alvin", new BigDecimal("80000"), 20));
result.add(new Developer("jason", new BigDecimal("100000"), 10));
result.add(new Developer("iris", new BigDecimal("10000"), 23));returnresult;
}
}
3、在Java8使用Lamdba排序
public class TestSortingLamdba {
public static void main(String[] args) {
List listDevs = getDevelopers();
listDevs.sort((Developer o1, Developer o2) -> o1.getAge() - o2.getAge());
listDevs.forEach(System.out::println);
System.out.println("----------------");
listDevs.sort((o1, o2) -> o1.getName().compareTo(o2.getName()));
listDevs.forEach(System.out::println);
System.out.println("----------------");
listDevs.sort(Comparator.comparing(Developer::getSalary));
listDevs.forEach(System.out::println);
System.out.println("----------------");
listDevs.sort(Comparator.comparing(Developer::getSalary).reversed());
listDevs.forEach(System.out::println);
}
private static List getDevelopers() {
List result = new ArrayList();
result.add(new Developer("mkyong", new BigDecimal("70000"), 33));
result.add(new Developer("alvin", new BigDecimal("80000"), 20));
result.add(new Developer("jason", new BigDecimal("100000"), 10));
result.add(new Developer("iris", new BigDecimal("10000"), 23));
return result;
}
}