Collection 和 Map的继承体系

Collection和Map的继承体系图:

 Collection接口:

       Collection是层次结构中的根接口。Collection表示一组对象,这些对象也称为Collection的元素。JDK不提供Collection的任何实现,所以它提供具体的子接口(Set、Queue和List)实现。这些接口通常用来传递Collection,并在需要使用的地方操作这些Collection。

List接口:

       List接口是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(数字下标)来访问和搜索List中的元素。

        List接口除了具有Collection接口必备的iterator()方法外,还提供了其他方法,比如在ListIterator多了一些add()之类的方法来方便使用者添加、删除、设定元素,还可以向前或者向后遍历元素。

        实现List接口的类有LinkedList、ArrayList、Vector和Stack。

LinkedList类:

        LinkedList是List接口的链接列表实现,允许null元素。LinkedList提供额外的get、remove、insert方法在LinkedList的首部或尾部。这些操作是LinkedList可被用作堆栈(stack)、队列(queue)或者双向队列(deque)。

        LinkedList是不可以同步的,如果多个线程访问一个链接列表时有一个线程从结构上修改了该列表,则它必须自身实现访问同步来防止对列表进行意外的不同步访问。可以在创建List时构造一个同步的List 如:

        List list =Collections.synchronizedList(new LinkedList(....))

 ArrayList类:

        ArrayList是List接口的大小可变的数组。它允许所以的元素(包括null)。ArrayList也是没有同步的。

        ArrayList每一个实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断的添加新元素而自动增加(增加的算法没有定义)。如需插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。

Vector类:

        Vector非常类似ArrayList,但是Vector是同步的。虽然Vector创建的Iterator和ArrayList创建的是同一个接口,但是因为Vector是同步的,当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态,这是调用Iterator的方法时方法会抛出异常(ConcurrentModificationException   当方法检测到对象的并发修改,但不允许这种操作的时候,抛出此异常)。

Stack类:

          Stack继承自Vector,它实现了一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当做堆栈使用。Stack刚创建的时候是空栈。

Set接口:

           Set是一种不包含重复元素的Collection,Set只能允许出现一个null值,而且添加元素是无序的。

Map接口:

           Map是没有继承Collection接口的,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能对应一个value。Map的内容可以被当做一组key集合,一个value集合或者一组key-value映射。

Hashtable类 
  Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空(non-null)的对象都可作为key或者value。 
  添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。  


HashMap类 
  HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。
       但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。
       因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。 


WeakHashMap类 
  WeakHashMap是一种改进的HashMap,它对key实行“弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值