核心部分的代码是TimSort()。归并排序
基础类型List排序
//对数字进行排序List nums = Arrays.asList(3,1,5,2,9,8,4,10,6,7);nums.sort(Comparator.reverseOrder());//reverseOrder倒序System.err.println("倒序:"+nums);nums.sort(Comparator.naturalOrder());//naturalOrder自然排序即:正序System.err.println("正序:"+nums);
对象List单属性排序
List listDevs = ComparatorTest.getDevelopers();System.out.println("排序前:");
//JAVA8的写法,循环listDevs.forEach((developer)->System.out.println(developer));
//第一个写法Collections.sort(listDevs,newComparator() {@Overridepublicintcompare(Developer o1, Developer o2){returno1.getAge().compareTo(o2.getAge()); }});
//第二个写法,JAVA8的写法,List 接口支持直接使用 sort 该方法,不再需要使用 Collections.sort 了//listDevs.sort(listDevs, new Comparator<Developer>() {
// @Override
// public int compare(Developer o1, Developer o2) {
// return o1.getAge().compareTo(o2.getAge();// }//});
//第三个写法,Lambda写法,JAVA8的写法
//listDevs.sort((Developer o1, Developer o2)->o1.getAge().compareTo(o2.getAge()));
//第四个写法,Lambda写法,JAVA8的写法
//listDevs.sort((o1, o2)->o1.getAge().compareTo(o2.getAge()));
//第五写法,个Lambda写法,JAVA8的写法
//listDevs.sort(Comparator.comparing(Developer::getAge));
//第六写法,个Lambda写法,JAVA8的写法
Comparator ageComparator = (o1, o2)->o1.getAge().compareTo(o2.getAge());listDevs.sort(ageComparator);
//按上面配置的顺序取值listDevs.sort(ageComparator.reversed());
//按上面配置的顺序反向取值System.out.println("排序后:");
//JAVA8的写法,循环listDevs.forEach((developer)->System.out.println(developer));
执行结果:
网友评论