Java学习之HashSet
基础知识
- HashSet是Set接口的一个实现类,存储的元素都是无序且不重复的
- HashSet集合存储一个元素时,首先会调用该元素的hashcode()方法来确定元素存储的位置,然后调用该元素的equals()方法来确保该集合中没有重复的元素
- 当向集合存储一个元素的时候,为了保证集合能够正常的工作,要在存入对象时,重写Object类中的hashcode()方法和equals()方法,对于存储一个字符串对象来说,String类已经默认重写了两个方法,但是如果要存储用户自定义的数据类型,就需要自己重写上述两种方法
Demo案例
package com.tang.chapter6.collection;
import java.util.HashSet;
/**
* @author Tang
*/
public class Student {
String id;
String name;
public Student(String id, String name){
this.id = id;
this.name = name;
}
@Override
public String toString(){
return id + ":" + name;
}
@Override
public int hashCode(){
return id.hashCode();
}
@Override
public boolean equals(Object obj){
if (this == obj){
return true;
}
if (!(obj instanceof Student)){
return false;
}
Student stu = (Student) obj;
return this.id.equals(stu.id);
}
public static void main(String[] args) {
HashSet<String> stu = new HashSet<String>();
Student stu1 = new Student("1","zs");
Student stu2 = new Student("2","ls");
Student stu3 = new Student("2","ls");
stu.add(stu1.toString());
stu.add(stu2.toString());
stu.add(stu3.toString());
System.out.println(stu);
}
}