Java的集合框架,就是指Java的一组用来存放数据的容器类型的集合。
官方文档中的说法是,集合表示一组被称为其元素的对象。 一些集合允许重复元素,而其他集合不允许。 有些被命令和其他无序。
集合框架的设计理念,是要满足以下目标:
1)提高代码的效用
2)可以用同样的方式操作不同类型的集合
3)更轻易地对集合进行扩展和适应
整个集合框架就是围绕一组标准接口而设计。

集合框架主要分为两大类:Collection、Map
1.Collection:所有通用的Collection实现类,都应提供两个标准的构造器,一个无参构造函数和一个含参构造函数。每个Collection都从其Iterable继承了forEach方法,即可使用forEach方法遍历集合内元素
A.接口方法详情

  1. int size():返回集合中的元素数,如果集合元素超过Integer.MAX_VALUE个,则返回Integer.MAX_VALUE
  2. boolean isEmpty():如果不包含元素,则返回true
  3. boolean contains(Object o):当且仅当集合至少包含一个指定元素时,返回true;
  4. Iterator<E> iterator():返回集合元素的迭代器
  5. Objext[] toArray():返回一个包含此集合中的所有元素的数组。
  6. <T> T[] toArray(T[] a):返回包含此集合中的所有元素的数组,且指定了泛型
  7. boolea add(E e):向集合添加元素,成功更改时返回true,否则(如集合不允许重复,而新添元素已存在时),返回false
  8. boolean remove(Object o):从集合中删除指定元素,成功删除时返回true
  9. boolean containsAll(Collection<?> c):如果此集合包含指定集合中的所有元素,则返回true
  10. boolean addAll(Collection<? extends E> c):将指定集合中的所有元素添加到此集合
  11. boolean removeAll(Collection<?> c):删除指定集合中包含的所有此集合元素
  12. default boolean removeIf(Predicate<? super E> fliter):删除满足给定谓词的此集合的所有元素,默认实现使用iterator()遍历集合的所有元素。使用Iterator.remove()删除每个匹配的元素。
  13. boolean retainAll(Collection<?> c):仅保留此集合中包含的元素。
  14. void clear():从集合中删除所有元素
  15. boolean equals(Object o):将指定的对象与此集合进行比较
  16. int hashCode():返回此集合的哈希码值。此哈希码值表示的是返回对象的内存地址经过处理后的结构,不同对象的内存地址不一样,哈希码不一样。
  17. default Spliterator<E> spliterator():创建一个Spliterator在这个集合中的元素。实施应该记录分配器报告的特征值。(?)
  18. default Stream<E> stream():返回一个顺序Stream与此集合作为其来源。(?)
  19. default Stream<E> paralletStream():返回可能并行的Stream与此集合作为其来源。(?)

B.Collection的子接口:

  1. List:有序集合,又称为序列。可以通过整数索引访问元素。已知实现类有:AbstractListAbstractSequentialListArrayListAttributeListCopyOnWriteArrayListLinkedListRoleListRoleUnresolvedListStackVector
  2. Set:不包含重复元素的集合。模拟了数学集接口。已知实现类:AbstractSetConcurrentHashMap.KeySetViewConcurrentSkipListSetCopyOnWriteArraySetEnumSetHashSetJobStateReasonsLinkedHashSetTreeSet
  3. Queue:设计用于在处理之前保留元素的集合。队列通常但不一定是以FIFO(先进先出)方式排序元素。 除了优先级队列之外,优先级队列是根据提供的比较器对元素进行排序,或者元素的自然排序,以及对元素LIFO(先进先出)进行排序的LIFO队列(或堆栈)。 无论使用什么顺序,队列的头都是通过调用remove()或poll()删除的元素。 在一个FIFO队列,所有新元素插入到队列的尾部 。 其他类型的队列可以使用不同的布局规则。 每个Queue实现必须指定其排序属性。AbstractQueueArrayBlockingQueueArrayDequeConcurrentLinkedDequeConcurrentLinkedQueueDelayQueueLinkedBlockingDequeLinkedBlockingQueueLinkedListLinkedTransferQueuePriorityBlockingQueuePriorityQueueSynchronousQueue
  4. BeanContext
  5. BeanContextServices
  6. BlockingDeque< E >
  7. BlockingQueue< E >
  8. Deque< E >
  9. NavigableSet< E >
  10. SortedSet< E >
  11. TransferQueue< E >