java 之 集合(hashSet)示例

import java.util.Collection;
import java.util.HashSet;


public class CollectionTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Collection collections = new HashSet();
		
		ReflectPoint pt1 = new ReflectPoint(3, 3);
		ReflectPoint pt2 = new ReflectPoint(4, 4);
		ReflectPoint pt3 = new ReflectPoint(3, 3);
		
		collections.add(pt1);
		collections.add(pt2);
		collections.add(pt3);
		collections.add(pt1);
		
		//没有重写hashCode和equals, 输出3
		//都重写后 输出2
		//先根据哈希码存放,如果相等再去比较equals方法,不会重复add
		
		
		//去掉 hashCode  输出3, 哈希码根据内存地址来了,不一样,就不用equals了
		
		//重新加上hashCode方法,修改y值后,哈希码变了,在新的哈希码属于的区域找不到元素,就删除不了了
		//下边这行注释后,size就变为1,可以删掉
		pt1.y = 7;
		//还是2,删不掉,误以为删掉了,其实没有,这就会造成内存泄漏
		//删的时候,找不到pt1,存储区域改变了
		collections.remove(pt1);
		System.out.println(collections.size());
	}

}

public class ArrayTest {

	/**
	 * 相同的维数
	 * Arrays 工具类:
	 * public static <T> List<T> asList(T... a)
	 * 这是1.5的。如果参数是int[] 会把它当作一个对象,不会拆开输出
	 * 
	 * 
	 * public static List asList(Object[] a)
	 * 这是1.4的。如果参数是String[],那么就会自动采用1.4的方法,
	 * 参数符合,就会把数组中的元素拆开输出
	 * 
	 * 不能得到数组(int[] a)的类型,只能得到某个元素的类型
	 * a[0].getClass().getName();
	 * 
	 * Object[] a = new Object[]{"a",1};
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a1 = new int[3];
		int[] a2 = new int[4];
		int[][] a3 = new int[2][3];
		String[] a4 = new String[3];
		//是不是同一份字节码
		System.out.println(a1.getClass()==a2.getClass());
		//下边两句编译通不过
		//System.out.println(a1.getClass()==a4.getClass());
		//System.out.println(a1.getClass()==a3.getClass());
		//[I 大写I 代表int
		System.out.println(a1.getClass().getName());
		//java.lang.Object
		System.out.println(a1.getClass().getSuperclass().getName());
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值