简介
java中的排序本质上是实现对待排序对象的比较,即借助比较器实现排序,例如Comparator和Comparable等.当对象具备比较功能那么可以借助集合工具的排序算法来实现具体排序,例如Collections.sort以及stream.sort等.详细信息可参考[java中的比较器Comparable与Comparator]
具体方案
测试模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class student implements Comparable<student>{
int age;
int grade;
@Override public int compareTo(student o){ if(o.getAge() > this.getAge()){ return -1; }else if(o.getAge() < this.getAge()){ return 1; }else { return 0; } } }
|
先上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| private List<student> students = Lists.newArrayList();
@Test public void sortMethod() { students.add(student.builder().age(10).build()); students.add(student.builder().age(30).build()); students.add(student.builder().age(50).build()); students.add(student.builder().age(10).build()); students.add(student.builder().age(20).build()); students.add(student.builder().age(40).build()); students.add(student.builder().age(60).build());
Collections.sort(students, new Comparator<student>() { @Override public int compare(student o1, student o2) { if (o1.getAge() > o2.getAge()) { return -1; } else if (o1.getAge() < o2.getAge()) { return 1; } else { return 0; } } }); students = students.stream().sorted(Comparator.comparing(student::getAge)).collect(Collectors.toList()); students = students.stream().sorted(Comparator.comparing(student::getAge).reversed()).collect(Collectors.toList()); students = students.stream().sorted(Comparator.comparing(student::getAge).thenComparing(student::getGrade)).collect(Collectors.toList());
}
|
总结
排序的基础和前提是比较,若要实现比较则必须借助Comparator或Comparable(具体可参考[java中的比较器Comparable与Comparator]),在比较实现后可借助集合工具内置排序算法进行排序.
版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!
本文出自:monkeyGeek
座右铭:生于忧患,死于安乐
欢迎志同道合的朋友一起交流、探讨!
monkeyGeek