当前位置: 主页 > JAVA语言

java中集合排序-java数组从小到大排序

发布时间:2023-03-24 10:11   浏览次数:次   作者:佚名

Comparator是在集合外部实现的排序,位于java.util下。

我们若需要控制某个类的次序,而该类本身不支持排序(即没有实现Comparable接口);那么java中集合排序,我们可以新建一个该类的比较器来进行排序。这个比较器只需要实现comparator即可。

java中集合排序_java数组按大小排序_java数组从小到大排序

comparable相当于内部比较器。comparator相当于外部比较器。

案例讲解:

java数组按大小排序_java数组从小到大排序_java中集合排序

要求:存储学生对象并遍历,按照年龄从小到大排序,年龄相同时java中集合排序,按照姓名的字母顺序排序。

创建学生类:

java数组按大小排序_java数组从小到大排序_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比较器

java数组按大小排序_java中集合排序_java数组从小到大排序

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());
		}
	}

结果显示:

java数组按大小排序_java中集合排序_java数组从小到大排序

java数组按大小排序_java数组从小到大排序_java中集合排序

Comparator比较器