HashSet与ArrayList,linkedList都是集合框架的内容,在访问方式上,HashSet只能使用Iterator,ArrayList,linkedList可以使用索引和Iterator,并且HashSet中的元素不允许重复。本文不在举例具体如何使用,如果不会,请参考上文Java集合类ArrayList和linkedList。
当我们需要把一个对象添加到HashSet中去,如果对象本身不做处理,它是无法判断元素的重复问题。假如我们需要将类Student添加到HashSet中去,我们需要重写hashCode方法和equals方法,请看下面的例子。
//学生类
public class Student {
private String name;
private int Age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Student(String name,int age,String sex){
super();
setName(name);
setAge(age);
setSex(sex);
}
//判断重复的方法
@Override
public int hashCode(){
return this.getName().hashCode();
}
//判断重复的方法
@Override
public boolean equals(Object obj){
if (this==obj){
return true;
}
if ( (obj!=null) && (obj instanceof Student) ){
Student stu = (Student) obj;
if (stu.getName().equals(name)){
return true;
}
}
return false;
}
}