public class ReflectPoint {
private int x;
public int y;
public String str1="ball";
public String str2="basketball";
public String str3="itcast";
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
/* @Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ReflectPoint other = (ReflectPoint) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
*/
/*当添加上面这段代码后,pt1与pt3相等,当使用HashSet时,就只放入了两个
* 元素*/
public String toString(){
return str1+" "+str2+" "+str3;
}
}
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
public class ReflectTest {
public static void main(String[] args) throws Exception {
Collection collections = new HashSet();
//Collection collections = new ArrayList();
/*ArrayList是一种有顺序的集合,把对象的引用放入一个相当于数组的容器
* 当有相同的对象放进去时,只是不同位置放入的引用变量相同,此时可以放进去
* 而HashSet先判断两个对象是否相等,如果相等则不放入,所以当collections
* 为HashSet时,collections长度为3,而用ArrayList时collections长度为4*/
ReflectPoint pt1 = new ReflectPoint(3,3);
ReflectPoint pt2 = new ReflectPoint(5,5);
ReflectPoint pt3 = new ReflectPoint(3,3);
collections.add(pt1);
collections.add(pt2);
collections.add(pt3);
collections.add(pt1);
System.out.println(collections.size());
}
}