Java笔记集合

一、集合框架图

Java集合主要分为Set、List、Map三种类型,其中List和Set都继承Collection接口,如下图:

Java笔记集合_第1张图片


1、Collection

Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 SetList)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。

方法摘要
boolean add(E e)
          确保此 collection 包含指定的元素(可选操作)。
boolean addAll(Collection c)
          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
boolean clear()
          移除此 collection 中的所有元素(可选操作)。
boolean contains(Object o)
          如果此 collection 包含指定的元素,则返回 true
boolean containsAll(Collection c)
          如果此 collection 包含指定 collection 中的所有元素,则返回 true
boolean equals(Object o)
          比较此 collection 与指定对象是否相等。
int hashCode()
          返回此 collection 的哈希码值。
boolean isEmpty()
          如果此 collection 不包含元素,则返回 true
Iterator iterator()
          返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o)
          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。

















List承诺可以将元素维护在特定的序列中。List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和删除元素。List与 set 不同,列表通常允许重复的元素。并且存放的顺序与插入的顺序一致。

常用的有两种List类型:ArrayList和LinkedList。

ArrayList

LinkedList

ArrayList擅长于随即访问元素,因为它像数组一样提供了下标,可以根据下标直接访问,所以可以将ArrayList看作可扩充自身尺寸的数组。但是在ArrayList的中间插入和移除元素时较慢。 LinkedList通过代价较低的在List中间进行插入和删除操作,提供了优化的顺序访问。但是在随即访问方面相对比较慢

3、Set

一个不包含重复元素的 collection。更确切地讲,set 不包含满足e1.equals(e2) 的元素对e1e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的set 抽象。 
方法摘要:
继承了所有的Collection的方法
Set分为HashSet和TreeSet

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用null 元素。

此类为基本操作提供了稳定性能,这些基本操作包括 addremovecontainssize,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与HashSet 实例的大小(元素的数量)和底层HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

注意,此实现不是同步的。

4、Map

将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。
方法摘要
void clear()
          从此映射中移除所有映射关系(可选操作)。
boolean containsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true
boolean  
Set> entrySet()
          返回此映射中包含的映射关系的 Set 视图。
boolean equals(Object o)
          比较指定的对象与此映射是否相等。
 V get(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
int hashCode()
          返回此映射的哈希码值。
 boolean isEmpty()
          如果此映射未包含键-值映射关系,则返回 true
 Set keySet()
          返回此映射中包含的键的 Set 视图。
 V put(K key,V value)
          将指定的值与此映射中的指定键关联(可选操作)。
 void putAll(Map m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。
 V remove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
int size()
          返回此映射中的键-值映射关系数。
区别
HashMap HashTable

父类abstractMap

父类dictionary
线程不同步,效率高 线程同步,效率低
<键,值>可以为空 <键,值>不可以为空


你可能感兴趣的:(Java)