容器——总结(类篇)

上一篇 / 下一篇  2015-01-12 19:23:17 / 个人分类:原创

一、ArrayList

Public class ArrayList<E> extends AbstractList<E> implements List<E>,RandomAccess,Cloneable,Serializable

1、允许包括 null 在内的所有元素。

2sizeisEmptygetsetiterator  listIterator 操作都以固定时间运行。add 操作以分摊的固定时间运行,也就是说,添加n个元素需要O(n)时间。

3、注意,此实现不是同步的。如果多个线程同时访问一个 ArrayList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表包装起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:List list = Collections.synchronizedList(new ArrayList(...)); 

4、此类的 iterator  listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove  add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败。

5、构造器

ArrayList():构造一个初始容量为10的空列表。

ArrayList(int initialCapacity):构造一个具有指定初始容量的空列表。

ArrayList(Collection<? extends E> c):构造一个包含指定Collection的元素的列表,这些元素是按照该Collection的迭代器返回他们的顺序排列的。

6public Object[] toArray():

列表不维护对返回数组的任何引用,因此它将是安全的(此方法必须分配一个新的数组,调用者可以自由修改返回的数组)。

 

二、LinkedList

Public class LinkedList<E> implements List<E>,Deque<E>,Cloneable,Serializable

1、允许包括 null 在内的所有元素。

2、链接列表可用作堆栈(后进先出)、队列(先进先出)或双端队列

3、注意,此实现不是同步的。如果多个线程同时访问一个 LinkedList 实例,而其中至少一个线程从结构上修改了列表,那么它必须 保持外部同步。(结构上的修改是指任何添加或删除一个或多个元素的操作,或者显式调整底层数组的大小;仅仅设置元素的值不是结构上的修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法将该列表包装起来。这最好在创建时完成,以防止意外对列表进行不同步的访问:List list = Collections.synchronizedList(new LinkedList(...)); 

4、此类的 iterator  listIterator 方法返回的迭代器是快速失败的:在创建迭代器之后,除非通过迭代器自身的 remove  add 方法从结构上对列表进行修改,否则在任何时间以任何方式对列表进行修改,迭代器都会抛出ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败。

5、构造器

LinkedList():构造一个空列表。

LinkedList(Collection<? extends E> c):构造一个包含指定Collection的元素的列表,这些元素是按照该Collection的迭代器返回他们的顺序排列的。

public E pop():从此列表所表示的堆栈处弹出一个元素,即移除丙返回此列表的第一个元素。列表为空时返回NoSuchElementException——此方法等效于removeFirst() .

Public E removeFirst():移除并返回此列表的第一个元素

Public E remobeLast():移除并返回此列表的最后一个元素。

Public void adddFirst(E e):将制定元素插入此列表的开头。——push方法与addFirst等效

Public void addLast(E e):将制定元素添加到此列表的结尾。此方法等效于add(E)

Public Boolean remove(Object o):从列表中移除首次出现的指定元素,如该元素不存在则不做更改。

Public E remove(int index):移除此列表指定位置处的元素,并返回从列表中删除的元素。

Public E remove():获取并移除此列表的头,如果列表为空则抛出NoSuchElementException异常

Public E peek():获取但不移除此列表的头(第一个元素)。如果列表为空,则返回Null——peek:看一眼。————peekFirst/peekLast

Public E element():获取但不移除此列表的头(第一个元素)。如果列表为空,则抛出NoSuchElementException异常。

Public E poll():获取并移除列表的头,如果列表为空,则返回null————pollFirst/pollLast

public boolean offer(E e):将制定元素添加到此列表的末尾(最后一个元素)。——offerFirst/offerLast

public Iterator<E> descendingIterator():反向以逆向顺序在此双端队列的元素上进行迭代的迭代器。元素将按从最后一个到第一个的顺序返回。

三、HashSet 

public class HashSet<E> extends Abstract<E> implements Set<E>,Cloneable,Serializable

1、允许使用Null元素。

2、注意此实不是同步的。如果多个线程同时访问一个hashSet,而其中至少一个县城修改了该set,那么他必须保持外部同步。这通常是通过对自然封装该set的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用Collections.synchromizedSet方法来包装。最好在创建是完成这一操作,以防止对该set进行意外的不同步访问:

Set s = Collections.synchromizedSet(new HashSet(...))

3、iterator方法返回的迭代器是快速失败的:在创建迭代器之后,如果对set进行修改,除非通过迭代器自身的remove方法,否则在任何时间以任何方式对其进行修改,Iterator都将抛出ConcurrentModificationException。

4、构造器:

HashSet():构造一个新的空set,其底层HashMap实例的默认初始容量是16,加载因子是0.75.

HashSet(Collection<? extends E> c):构造一个包含执行collection中的元素的新set。

HashSet(int initialCapacity):构造一个新的空set,其底层HashMap实例具有制定初始容量和默认的加载因子0.75.

HashSet(int initialCapacity,float loadFactor):构造一个新的空set,其底层HashMap实例具有指定的初始容量和指定的加载因子。

(初始容量是哈希表在创建时的容量;加载因子是哈希表在自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的成绩时,则要对该哈希表进行rehash操作(重建内部数据结构))


四、HashMap

public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>,Cloneable,Serializable

1、允许使用Null值和null键。

2、此实现不是同步的。

Map m = Collections.synchromizedMap(new HashMap(...));

3、迭代器快速失败的。抛出ConcurrentModificationException

4、构造器:

HashMap():构造一个具有默认初始容量(16)和默认加载因子(0.75)的空HashMap

HashMap(int initialCapacity):构造一个带制定初始容量和默认加载因袭(0.75)的空HashMap。

HashMap(int initialCapacity, float loadFactor):构造一个带制定初始容量和加载因子的空HashMap。

HashMap(Map<? extend K,? extends V> m):构造一个映射关系与指定Map相同的新HashMap。

5、方法:

public V ger(Object key):返回制定键苏映射的值;如果对于该键来说,此映射不包含任何映射关系,则返回Null.也可能该映射将该键显式地映射为Null.可以使用containsKey操作来区分。

public Set<K> keySet():返回此映射中所包含的键的Set视图。改set受映射的支持,所以对映射的更改将反应在该set中,反之亦然。


TAG:

 

评分:0

我来说两句

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 18279
  • 日志数: 25
  • 建立时间: 2014-11-10
  • 更新时间: 2015-03-12

RSS订阅

Open Toolbar