java数据结构-----Set

java数据结构-----Set

Set继承的是Collection接口,主要是实现数据的去重和排序。因此它有两个实现类HashSet和TreeSet。

下面我来介绍一下这两个类的作用。

HashSet,可以按照我们的自定义来进行去重。比如,我们在录入学生信息的过程中。要求学生的编号不能相同,因此我们需要对学生编号进行查重。但是,学生编号只是学生类中的一个属性,当我们需要对我们的自定义类进行查重时,我们就需要重写Object类的equal()方法和hashCode()方法。

        代码如下:

    

@Override
public int hashCode() {
	// TODO Auto-generated method stub
	return this.stuId.hashCode();
}
@Override
public boolean equals(Object o) {
	if(this==o){
		return true;
	}
	if(o instanceof Student){
		Student s = (Student) o;
		return this.stuId.equals(s.stuId);
	}
		return false;
}

这样我们就可以实现学生代码的去重。

TreeSet,可以按照我们的自定义变量进行排序。例如,我们可以按照学生的年龄对学生进行排序,这个时候我们需要实现Comparable<T>接口,并且重写其中的compareTo()方法。

public int compareTo(Student o) {
	if(o!=null){
		if(o instanceof Student){
			Student s = (Student) o;
			if(this.age-s.age==0){
				return 1;
			}//这个方法是为了防止两个值相同时进行去重
			return s.age-this.age;//降序排列
			//return this.age-s.age; 升序排列
			
		}
	}
	return 0;
}

我们可以在这个方法中看到,我们需要设置返回值来进行升序降序排列,同样增加了一步判断防止将具有相同学生年龄的学生认为是同一个学生而进行去重。

接下来我来简要说一说如何遍历一个集合(Set)。

首先我们可以使用迭代器,代码如下所示。

Iterator<Student> it = hSet.iterator();
		while(it.hasNext()){
			System.out.println(it.next());
		}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值