关于往Set集合中存储的元素,该元素的hashCode和equals方法.
HashMap中有一个put方法,put(key,value) key是无序不可重复的.
结论:存储在HashSet集合或者HashMap集合key部分的元素,需要同时重写hashCode+equals
import java.util.*;
public class SetTest02 {
public static void main(String[] args){
//创建集合
Set es = new HashSet();
Employee e1 = new Employee("jack","1000");
Employee e2 = new Employee("jack","1000");
Employee e3 = new Employee("Smith","1000");
Employee e4 = new Employee("Cook","2001");
Employee e5 = new Employee("Mark","3001");
Employee e6 = new Employee("Timi","3000");
System.out.println(e1.hashCode());
System.out.println(e2.hashCode());
//添加元素
es.add(e1);
es.add(e2);
es.add(e3);
es.add(e4);
es.add(e5);
es.add(e6);
//查看集合个数
System.out.println(es.size());
}
}
//根据现实业务逻辑得知
class Employee{
String name;//姓名
String no;//编号
//constuctor
Employee(String name,String no){
this.name = name;
this.no = no;
}
//重写equals方法
//如果员工编号相同,并且名字也相同,则是同一个对象
public boolean equals(Object o){
if(this==o){
return true;
}
if(o instanceof Employee){
Employee e = (Employee)o;
if(e.no.equals(this.no)&&e.name.equals(this.name)){
return true;
}
}
return false;
}
//重写hashCode方法
public int hashCode(){
//以员工编号分组
return no.hashCode();
}
}