您的位置 首页 java

Java基础学习——比较器排序Comparator

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

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

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

案例讲解:

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

创建学生类:

 /*
    创建学生类,定义两个变量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<student> ts = new TreeSet<>(new Comparator<student>() {

			@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比较器

文章来源:智云一二三科技

文章标题:Java基础学习——比较器排序Comparator

文章地址:https://www.zhihuclub.com/197958.shtml

关于作者: 智云科技

热门文章

网站地图