Set集合接口具有:
1. 无序性(输入顺序与储存无关)
2. 唯一性,不可重复性
实现类:HashSet()
问题:
当一个集合中出现若干的对象,对象中的字符串值或其他数值一样,但真实hash值却不相同,会违背Set接口的特征唯一性.
考虑到真实数据,所以进行了重写hashCode方法,但hashCode要配合着equals一起使用,所有都进行了重写.
one.重写hashCode方法与equals方法的代码如下:
package com.hare.test;
import java.util.HashSet;
import java.util.Set;
/**
* 定义一个类对象,加入Set接口下的集合,使其equals判断的是内容,
* 1. 重写Object.equals方法,且重写hashCode
* 2. java规定:当两个对象相等时,hash值也一样相等
*/
class Naruto{
private String name;//名字
private int fighting;//战斗力
private int id;//唯一id
public Naruto() {
}
public Naruto(String name, int fighting,int id) {
this.name = name;
this.fighting = fighting;
this.id = id;
}
/**
* 对比name,fighting是否相同
* @param obj 相比较的对象
* @return 是否相同
*/
@Override
public boolean equals(Object obj) {
//如果地址相同,不用再做比较