import java.util.*;
public class Test{
public static void main(String []args){
Collection c = new ArrayList();
c.add( "hello"); // 1
c.add( new Integer( "100")); //2
c.add( new Name( "vicky")); // 3
c.remove( "hello"); //4
c.remove( new Integer( "100")); //5
c.remove(( new Name( "vicky")); //6
}
}
public class Test{
public static void main(String []args){
Collection c = new ArrayList();
c.add( "hello"); // 1
c.add( new Integer( "100")); //2
c.add( new Name( "vicky")); // 3
c.remove( "hello"); //4
c.remove( new Integer( "100")); //5
c.remove(( new Name( "vicky")); //6
}
}
1、这里1和4,2和3是同一个对象,Name类如果没有重写equals方法,那么3和6就不是同一个对象,所以
最终容器c ,里面只有一个元素,就是Name类的对象vicky。
2、如果要重写Name类的equals方法,必须也重写Name类的hashCode方法。
public
boolean equals(object OBJ){
if(OBJ instanceof Name){
Name name = (Name)OBJ;
return(lastname.equals(name.lastname));
}
}
public int hashCode(){
return lastname.hashCode;
}
if(OBJ instanceof Name){
Name name = (Name)OBJ;
return(lastname.equals(name.lastname));
}
}
public int hashCode(){
return lastname.hashCode;
}
3 、instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
转载于:https://blog.51cto.com/vicky001/392893