大家好,欢迎来到IT知识分享网。
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<person> merge(ArrayList<person> persons){
ArrayList<person> 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<person> merge(ArrayList<person> persons){
ArrayList<person> res=new ArrayList<>();
Collections.sort(res,new Comparator<person>(){
@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<person> merge(TreeSet<person> persons){
TreeSet<person> res=new TreeSet<>(new Comparator<Person>(){
@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;
}
}
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/56871.html