集合

一、set和list




ArrayList和LinkedList的区别:


ArrayList如何实现扩容:


HashSet添加可变对象造成无法准确访问的例子:

public class TestHashSet {
	public static class R
	{
		private int count;
		public R(int count)
		{
			this.count=count;
		}
		public String toString()
		{
			return "R的count属性:"+count;
		}
		@Override
		public int hashCode() {
			return count;
		}
		@Override
		public boolean equals(Object obj) {
			if (this == obj)
				return true;
			if (obj == null)
				return false;
			if (getClass() != obj.getClass())
				return false;
			R other = (R) obj;
			if (count != other.count)
				return false;
			return true;
		}
	}
	public static void main(String[] args) {
		// ODO 自动生成的方法存根
		HashSet hs=new HashSet();
		
		hs.add(new R(-2));
		hs.add(new R(-3));
		hs.add(new R(5));
		hs.add(new R(9));
		
		System.out.println(hs);
		//取出第一元素
		Iterator it=hs.iterator();
		R first=(R)it.next();
		
		//把第一个元素的count属性赋值
		first.count=-3;
		System.out.println(hs);
		
		//删除count=-3的对象
		hs.remove(new R(-3));
		
		System.out.println(hs);
		
		//输出false
		System.out.println("hs是否包含count为-3的对象?"+hs.contains(new R(-3)));
		//输出false
		System.out.println("hs是否包含count为-2的对象?"+hs.contains(new R(-2)));
	}
}


二、map


引用类别:

我们希望描述这样一类对象:当内存空间还足够时,则能保存在内存之中;如果内存空间在进行垃圾回收后还是非常紧张,则可以抛弃这些对象

强引用:在代码中普遍存在,类式Object obj=new Object()这类的引用,只要强引用还存在,垃圾回收器就永远不会回收掉被引用的对象

软引用:当进行垃圾回收之后,内存空间足够,则能保存在内存之中;不够就抛弃回收

弱引用:无论内存是否足够,垃圾回收器工作时,都会回收

虚引用:目的是在这个对象被GC回收时,收到一个系统通知


WeakHashMap和HashMap:强弱引用之分


如何实现HashMap的同步?

Map m=Collections.synchronizedMap(new HashMap())来达到同步的效果,返回的Map封装了底层的HashMap的所有方法


HashMap、ConcurrenHashMap的区别

http://blog.csdn.net/xuefeng0707/article/details/40834595


使用自定义的Key作为HashMap或HashTable需要注意哪些问题?

   由于HashMap的Key是不可以重复的,因此要注意以下几点:

(1)如果想根据对象的相关属性来自定义对象是否相等,就需要重写equals方法,一旦重写了equals方法,那么就必须重写hashCode方法

(2)当自定义类的多项作为HashMap的key时,最好把这个类设计成不可变类


三、工具类Collections

           Collections提供了大量的对集合进行排序、查询、修改等操作,还可以将集合对象设置为不可变、对集合对象实现同步控制等方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值