java中集合排序-java数组从小到大排序
发布时间:2023-03-24 10:11 浏览次数:次 作者:佚名
Comparator是在集合外部实现的排序,位于java.util下。
我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么java中集合排序,我们可以新建一个该类的比较器来进行排序。这个比较器只需要实现comparator即可。
comparable相当于内部比较器。comparator相当于外部比较器。
案例讲解:
要求:存储学生对象并遍历,按照年龄从小到大排序,年龄相同时java中集合排序,按照姓名的字母顺序排序。
创建学生类:
/*
创建学生类,定义两个变量name,age
创建成员变量的get和set方法以及类的无参和带参方法
*/
public class Student {
private String name;
private int age;
public Student() {}
public Student(String name,int age) {
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建main方法,并在main方法中创建Comparator比较器
public static void main(String[] args) {
//创建集合对象 ,我们只需要直接new 一个Comparator就行
TreeSet ts = new TreeSet<>(new Comparator() {
@Override
public int compare(student s1, student s2) {
int num=s1.getAge()-s2.getAge();
int num1= num==0?s1.getName().compareTo(s2.getName()):num;
return num1;
}
});
//创建学生对象
student s1 = new student("xishi", 29);
student s2 = new student("wangzhaojun", 28);
student s3 = new student("diaochan", 30);
student s4 = new student("yangyuhuan", 33);
student s5 = new student("lengfeng", 33);
//将学生添加到集合中
ts.add(s1);
ts.add(s2);
ts.add(s3);
ts.add(s4);
ts.add(s5);
//遍历集合
for(student s:ts) {
System.out.println(s.getName()+","+s.getAge());
}
}
结果显示:
Comparator比较器