hashCode()的用法
import java.util.*;
public class TestCollection {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add( "Hello ");
c.add(new Worker( "royzhou ", "22 "));
c.add(new Integer(100));
c.remove( "Hello ");
c.remove(new Integer(100));
c.remove(new Worker( "royzhou ", "22 "));
System.out.println(c);
}
}
class Worker {
String name;
String age;
Worker(String name, String age) {
this.name = name;
this.age = age;
}
public String toString() {
return name+ " "+age;
}
public boolean equals(Object obj) {
if(obj instanceof Worker) {
Worker worker =(Worker) obj;
return((name.equals(worker.name))&&(age.equals(worker.age)));
}
return super.equals(obj);
}
public int hashCode() {
return name.hashCode();
}
}
程序里面hashCode()有什么用 ,在这里需要吗?
------解决方案--------------------在这里我也不是很肯定 了,因为在有些地方要比较你放进去的对像是否已经存在,比如说,如果你把一堆的对像放进一个Set(集合)里边,那么Set是不是允许有重复对像,那么怎么样才算重复呢,就是通过调用对像的equals()和hasCode方法进行比较的,但具体先调用哪个我忘记了.你可以试试.这里边可能在remove()方法中会用到,你可以查一直帮助文档,里边可能会有说明 的
------解决方案--------------------你重写了equals方法就必须重写hashCode方法.以便用户可以将对象插入到散列表中.
而且euqals和hashCode的定义必须一致.
由于程序里决定equals的是name和age
而hashCode里面只用了name的hashCode
所以个人认为这不是一个好的hashCode方法.
------解决方案--------------------帮顶
------解决方案--------------------学习