Java容器

Collection是最基本的集合接口,但是不能直接继承,Java SDK中提供的类都是继承自Collection的子接口,如List、Set。

1、List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组,List允许有相同的元素。 (1)LinkedList类实现了List接口,允许null元素。此外LinkedList提供额外的get,remove,insert方法在 LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。是线程不安全的,也就是没有同步方法。可以通过 List list = Collections.synchronizedList(new LinkedList(...));实现同步。 (2)ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步,也是线程不安全的。 (3)Vector非常类似ArrayList,但是Vector是同步的。 (4) Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方 法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。 2、Set其中元素不允许空,不允许重复。HashSet的元素存放顺序和添加进去时候的顺序没有任何关系;而LinkedHashSet 则保持元素的添加顺序;TreeSet则是对我们的Set中的元素进行排序存放。 3、Map HashTable和HashMap区别: (1)public class Hashtable extends Dictionary implements Map public class HashMap extends AbstractMap implements Map (2)HashTable是线程安全的而HashMap不是线程安全的 (3)HashTable Key和Value都不允许null,而HashMap允许空,key不能重复 (4)哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。 (5)Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。 WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收

查看原文:http://waitblog.sinaapp.com/?p=253
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值