用TreeSet存储自定义对象1(实现Comparable接口)

#日常练习
关于TreeSet的小练习

TreeSet结构底层实现:在添加元素时会自动调用compareTo方法,
所以,TreeSet存储的是按自定义排列方法排列有序的结构实现;
TreeSet在比较时若返回0则认为两元素相同,后来的不会被存储;
String类型预先定义了自己的比较方法(按字典序比较),很多类型都预定义了自己的比较方法;

package Collection;
import java.util.*;

public class TreeSetTest {
	
	public static void main(String[] args) {
		TreeSet<Administrator> ts = new TreeSet<Administrator>();
		//TreeSet结构底层实现:在添加元素时会自动调用compareTo方法,
		//所以,TreeSet存储的是按自定义排列方法排列有序的结构实现;
		//TreeSet在比较时若返回0则认为两元素相同,后来的不会被存储;
		//String类型预先定义了自己的比较方法(按字典序比较),很多类型都预定义了自己的比较方法;
		ts.add(new Administrator(123,"person1"));
		ts.add(new Administrator(456,"person2"));
		ts.add(new Administrator(789,"person3"));
		ts.add(new Administrator(258,"person4"));
		
		for(Iterator<Administrator> it = ts.iterator();it.hasNext();) {
			Administrator a = it.next();
			System.out.println(a.getCount()+"-->"+a.getName());
		}
		


	}

}


被调用类

package Collection;
//将自定义类存入TreeSet中时,自定义类必须实现Comparable接口
class Administrator implements Comparable<Administrator>{


	private int count;
	private String name;
	Administrator(int count,String name){
		this.count = count;
		this.name = name;
	}
	//复写Object类中compareTo方法,定义自己的比较方法。
	public int compareTo(Administrator adm) {
		if(!(adm instanceof Administrator)) {
			throw new RuntimeException("传入的类类型错误!");
		}
		
		if(this.getCount() > adm.getCount()) {
			return 1;
		}
		if(this.getCount() == adm.getCount()) {
			this.getName().compareTo(adm.getName());
			return 0;
		}
		return -1;
		
	}

	public int hashCode() {
		return this.count+this.name.hashCode();
	}

	public boolean equals(Object obj) {
		if(!(obj instanceof Administrator)) {
			throw new RuntimeException("传入的类类型错误!");
		}
		Administrator adm = (Administrator)obj;
		//按照账号和姓名都相同时判断为相同对象;
		return(this.count == adm.count && this.name.equals(adm.name)) ;
		
	}
	
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}



2017/1/17更新:学习了泛型,完善了代码,功能没变。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值