首先。给你个概念,就是HashSet不允许添加相同的对象,内部会自动调用hashCode和equals方法来判断对象是否同一个对象,如果是同一个对象则第二个没被添加的则不会添加进set集合中。具体步骤是先看两个对象的hashCode是否相等,不相等则直接添加进集合里,相等的话再两个对象进行equals方法比较。如果相等不会添加进,不相等则证明是不同的两个对象。添加进HashSet集合里的任何对象,都需要复写hashCode和equals方法。
1。正如上面所说,hashCode是内部调用的。用来第一层判断对象是否相同,里面的result的算法是你自己随便写的。
2.public Person(String name,long id_card){...}这个是构造方法。可以在创建对象的时候给Person对象的全部属性进行一次性赋值,而ublic void setName(String name) { this.name = name;} 和public void setId_card(long idCard) {id_card = idCard;} 这些方法是单独为一个person对象的某个属性赋值的。
3.这个就是第二个比较方法。判断对象是否相同。
4.详见最顶
(1),>>> 无符号右移,高位补0
。这个很好理解,这是从数据库查出来的ID号做成卡号,你看卡号一般是00001,00002之类的而没有1,2,3这种
(2),Person那个函数是 构造函数,是在需要创建一个新的person对象的时候用的,有时已经存在一个person对象,只要是对它做一些修改,这是就用set/get方法。
(3)equals()方法是Object类的方法,意思是比较参数对象与当前对象是否相同,这里重写这个方法是指定具体的比较规则。
(4)Iterator