学生自动排队实例(comparactor比较器)

本节实现了学生自动排队实例,comparactor比较器实现了比较的方法。

1.由于实现了比较器类,所以不需要实现Comparable接口。

2.实现Comparable接口的排序叫做自然排序,利用比较器类的排序叫做客户化排序

3.可以按需定制自己的compare方法。

StudentCom类

public class StudentCom {
	private String name;
	private int height;
	public StudentCom(){
	}
	public StudentCom(String name,int height){
		this.name=name;
		this.height=height;
	}
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
	public String toString(){
		return "姓名"+this.name+"身高为"+this.height;
	}
	public boolean equals(Object obj){
		if(obj instanceof StudentCom){
			StudentCom stu=(StudentCom)obj;
			if(this.name.equals(stu.name)&&this.height==stu.height){
				return true;
			}
		}
		return false;
	}
	public int hashCode(){
		return name.hashCode()^height;
	}
}
比较器类StudentComparactor

import java.util.Comparator;


public class StudentComparactor implements Comparator<StudentCom> {
	public int compare(StudentCom stu1,StudentCom stu2){
		if(stu1.getName().compareTo(stu2.getName())>0){
			return 1;
		}else
		if(stu1.getName().compareTo(stu2.getName())<0){
			return -1;
		}else{
			return stu1.getHeight()-stu2.getHeight();
		}
		//return 0;
	}
}
测试类main

import java.util.Iterator;
import java.util.SortedSet;
import java.util.TreeSet;


public class main {
	public static void main(String[] args){
		SortedSet<StudentCom> set=new TreeSet<StudentCom>(new StudentComparactor());
		StudentCom a=new StudentCom("a",167);
		StudentCom b=new StudentCom("b",145);
		StudentCom c=new StudentCom("c",189);
		StudentCom d=new StudentCom("d",179);
		StudentCom e=new StudentCom("a",189);
		set.add(a);
		set.add(b);
		set.add(c);
		set.add(d);
		set.add(e);
		Iterator it=set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}
	}
}
运行结果:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值