java集合类中常见接口、类的区别和联系

来源:互联网 发布:广州新百佳网络批发 编辑:程序博客网 时间:2024/05/15 12:24

一、Vector和ArrayList

1、同步性:Vector是线程安全的(同步),而ArrayList是线程不安全的同步;

2、数据增长:当需要增长时,Vector默认增长一倍,而ArrayList却增长一半;

二、Collection、Set、List、LinkedList

Collection:各元素对象之间没有指定的顺序,允许有重复元素对象和多个null元素对象,(没第几个元素说法);

Set:各元素对象之间没有指定的顺序,不允许有重复元素对象,最多允许有一个null元素对象,(也没第几个元素对象的说法);

List:各元素对象之间有指定的顺序,允许有重复元素对象和多个null元素对象,有第几个元素对象的说法,可排序。

LinkedList:实现了List接口,允许null元素对象,此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。注意LinkedList没有同步方法,如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
    List list = Collections.synchronizedList(new LinkedList(...));

三、Collection和Collections

Collection:是java.util下的接口,它是各种集合的父接口,继承于他的接口主要有Set和List;

Collections:是java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

四、集合类继承结构图

Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap

从结构图中可以看出List和Set是继承自Collection接口,而Map却不是。