Java sort集合排序的两种方式解析
这篇文章主要介绍了Javasort集合排序的两种方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Comparable和Comparator
publicstaticvoidsort(List list);将集合中的数据按照默认规则进行排序(我们在自己的类里面实现Comparabl接口方法compareTo) publicstatic voidsort(List list,Comparator);将集合中的数据按照指定规则进行排序
Comparable
/** *@authorgw *@date2019/11/50005下午22:15 */ /* *publicstaticvoidsort(List list);将集合中的数据按照默认规则进行排序 * *注意: *sort使用前提:被排序的集合里面存储的元素,必须实现Comparable(接口),重写接口中的方法compareTo,定义排序规则 * *升序:this-参数 *return0;就是按照原来顺序输出 * * **/ publicclassDemo02Sort{ publicstaticvoidmain(String[]args){ ArrayList objects=newArrayList<>(); objects.add(newPerson("小明",23)); objects.add(newPerson("小红",24)); objects.add(newPerson("小绿",22)); System.out.println("objects="+objects); Collections.sort(objects); System.out.println("objects="+objects); } } classPersonimplementsComparable { privateStringname; privateintage; @Override publicintcompareTo(Personperson){ //return0; returnthis.getAge()-person.getAge(); } @Override publicStringtoString(){ return"Person{"+ "name='"+name+'\''+ ",age="+age+ '}'; } publicPerson(){ } publicPerson(Stringname,intage){ this.name=name; this.age=age; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } }
Comparator
/** *@authorgw *@date2019/11/50005下午22:40 */ /* *Comparator *Comparable都是接口 * *publicstaticvoidsort(List list,Comparatorc) * *Comparable:我们的类继承Comparable接口,然后实现里面的CompareTo方法, *如何调用:Collections.sort(arrayList) * *Comparator:我们的类不用继承Comparable接口,也不用继承Comparator接口 *如何调用:Collections.sort(objects,newComparator (){//匿名类 @Override publicintcompare(Person1person1,Person1t1){ intres=person1.getAge()-t1.getAge(); //前面减去后面,升序排列 if(res==0){ returnperson1.getName().charAt(0)-t1.getName().charAt(0); } returnres; } }); * **/ publicclassDemo03SortComparator{ publicstaticvoidmain(String[]args){ ArrayList objects=newArrayList<>(); objects.add(newPerson1("b小明",23)); objects.add(newPerson1("小红",24)); objects.add(newPerson1("小绿",22)); objects.add(newPerson1("a小绿",23)); System.out.println("objects="+objects); Collections.sort(objects,newComparator (){ @Override publicintcompare(Person1person1,Person1t1){ //return0; intres=person1.getAge()-t1.getAge(); //前面减去后面,升序排列 if(res==0){ returnperson1.getName().charAt(0)-t1.getName().charAt(0); } returnres; } }); System.out.println("objects="+objects); } } classPerson1{ privateStringname; privateintage; @Override publicStringtoString(){ return"Person{"+ "name='"+name+'\''+ ",age="+age+ '}'; } publicPerson1(){ } publicPerson1(Stringname,intage){ this.name=name; this.age=age; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } }
*Comparable:我们的类继承Comparable接口,然后实现里面的CompareTo方法, *如何调用:Collections.sort(arrayList) * *Comparator:我们的类不用继承Comparable接口,也不用继承Comparator接口 *如何调用:Collections.sort(objects,newComparator(){//匿名类 @Override publicintcompare(Person1person1,Person1t1){ intres=person1.getAge()-t1.getAge(); //前面减去后面,升序排列 if(res==0){ returnperson1.getName().charAt(0)-t1.getName().charAt(0); } returnres; } });
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。