java中对类进行排序

java类排序(蓝桥杯必学)

我们知道c++中有时候需要对结构体进行一些排序

可以直接调用sort(数组,排序方法);

而java中有时候需要对类进行指定的排序~

前导知识:

数组:(不论是int,char,String类型的数组)都调用 Arrays . sort() 排序即可

结构体: 首先要将它存放在集合中,在对其进行排序,调用 Collections . sort()排序,此时需要重新构造排序方法(但是例如TreeMap , TreeSet , PriorityQueue,等自带排序的集合,需要在初始化时就对其进行排序重写 )

对应习题

方法如下:

类:

class person{

int age;

String name;

person(){}

person(int age,String name){

this.age=age;

this.name=name;

}

}

方法1:(这种lambda表达式只能支持,根据结构体中单独一个元素进行排序):

public class Solution{

public ArrayList merge(ArrayList persons){

ArrayList res=new ArrayList();

//排序方式:(根据类中年龄升序排序)

//解释:对persons(person类)变量进行排序,a与b是两个person类的变量,若a.age-b.age>0则a排在b前,否则b排在a前(升序)

Collections.sort(persons,(a,b)->a.age-b.age);

for(int i=0;i<persons.size();i++){

res.add(persons.get(i));

}

return res;

}

}

方法2:(针对不自带排序的集合进行排序重写):

public class Solution{

public ArrayList merge(ArrayList persons){

ArrayList res=new ArrayList();

Collections.sort(res,new Comparator(){

@Override

public int compare(person p1,person p2){

int r1=p1.age-p2.age;

if(r1!=0)return r1;

return p1.name.compareTo(p2.name);

}

});

for(int i=0;i<persons.size();i++){

res.add(persons.get(i));

}

return res;

}

}

方法3:(针对自带排序的结合进行排序重写)

public class Solution{

public TreeSet merge(TreeSet persons){

TreeSet res=new TreeSet(new Comparator(){

@override

public int compare(person p1,person p2){

int r1=p1.age-p2.age;

if(r1!=0)return r1;

return p1.name.compareTo(p2.name);

}

});

for(int i=0;i<persons.size();i++){

res.add(persons.get(i));

}d

return res;

}

}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
上一篇 2022年6月19日 18:07
下一篇 2022年6月19日 18:07

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息