Java List的sort()方法改写compare()实现升序,降序,倒序的案例
本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。
首先明确一点:
compare(Integero1,Integero2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素!
通过以下例子可以清晰了解这一点:
publicstaticvoidmain(String[]args){ Listlist=newArrayList (); list.add(1); list.add(2); list.add(3); list.sort(newComparator (){ publicintcompare(Integero1,Integero2){ System.out.println(o1+","+o2);//输出o1,o2 return0; } }); }
输出为:
2,1
3,2
升序
代码:
publicstaticvoidmain(String[]args){ Listlist=newArrayList (); list.add(1); list.add(2); list.add(3); list.sort(newComparator (){ publicintcompare(Integero1,Integero2){ if(o1>o2) return1;//第二个元素(o1)比第一个元素(o2)大,返回1 if(o1==o2) return0; return-1; }//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换 }); System.out.println(list.toString()); }
输出:
[1,2,3]
降序
代码:
publicstaticvoidmain(String[]args){ Listlist=newArrayList (); list.add(1); list.add(2); list.add(3); list.sort(newComparator (){ publicintcompare(Integero1,Integero2){ if(o1>o2) return-1;//第二个元素(o1)比第一个元素(o2)大,返回-1 if(o1==o2) return0; return1; }//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换 }); System.out.println(list.toString());
输出:
[3,2,1]
倒序
代码:
publicstaticvoidmain(String[]args){ Listlist=newArrayList (); list.add(1); list.add(2); list.add(3); list.sort(newComparator (){ publicintcompare(Integero1,Integero2){ return-1; }//倒序就直接返回-1 }); System.out.println(list.toString()); }
输出:
[3,2,1]
补充:Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
我就废话不多说了,大家还是直接看代码吧~
importjava.util.Collections; importjava.util.LinkedList; importjava.util.List; publicclassTest{ Listlist=newLinkedList(); publicstaticvoidmain(String[]args){ Listlist=newLinkedList(); for(inti=0;i<9;i++){ list.add("a"+i); } Collections.sort(list);//顺序排列 System.out.println(list); Collections.shuffle(list);//混乱的意思 System.out.println(list); Collections.reverse(list);//倒序排列 System.out.println(list); System.out.println(Collections.binarySearch(list,"a5"));//折半查找 } }
补充:java8根据两个字段排序(一正序一倒叙)
Listcollect2=list.stream() .sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getScore)) .collect(Collectors.toList());
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。