目录:
一:java集合框架:
定义:
java集合可以看作是一种容器,用来存储对象信息。所有集合类都位于 java.util 包下,但支持多线程的集合类位于java.util.concurrent 包下。
Java 集合类主要由两个根接口 Collection(单值)和 Map(双值)派生出来的,Collection 派生出了三个子接口:List、Set、Queue,因此 Java 集合大致也可分成 List、Set、Queue、Map 四种接口体系。
其中接口有:Iterator->LinkIterator 、 Collection->List Set Queue 、Deque SortedSet NavigableSet、Map->SortedMap NavigableMap
抽象接口:带Abstract的接口
具体实现类 :1)list(有序可重复集合,可直接根据元素的索引来访问,允许为null) ArrayList LinkedList
2)Set(无序不可重复集合,只能根据元素本身来访问) HashSet TreeSet LinkedHashSet
3)Queue(队列集合) ArrayDequeue PriorityQueue(优先级队列)
4)Map(存储 key-value 对的集合,可根据元素的 key 来访问 value,只允许一个为null) HashMap HashTable LinkedHashMap TreeMap IdentityHashMap WeakHashMap
5) Vector Stack
1、Collection接口(不唯一,无序):
Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。Collection 接口存储一组不唯一,无序的对象。
* @param <E> the type of elements in this collection
* @author Josh Bloch
* @author Neal Gafter
* @see Set
* @see List
* @see Map
* @see SortedSet
* @see SortedMap
* @see HashSet
* @see TreeSet
* @see ArrayList
* @see LinkedList
* @see Vector
* @see Collections
* @see Arrays
* @see AbstractCollection
* @since 1.2
*/
public interface Collection<E> extends Iterable<E> {
通过Collection接口的定义可以看出来Collection继承自Iterable接口,Iterable就是迭代器接口
Iterable中的方法:有三个 forEach(Consumer<? super T> action) 、Spliterator<T> spliterator() 、Iterator<T> iterator();
其中forEach:是for循环针对元素进行遍历,首先要通过Objects工具类判断action是否为空,如果不为空,然后就开始遍历,如果为空就会抛出一个NullPointException的异常。
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
且接口中定义了如上方法,
1.1、List 接口(不唯一,有序):
1、List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,。
2、允许有相同的元素。
1.2、Set接口(唯一,无序):
1、Set 不保存重复的元素。
2、Set 接口是无序的对象。
2、Map接口:
Map 接口存储一组键值对象,提供key(键)到value(值)的映射。