Java之集合框架collections framework(屌絲版,基於Java1.8)
0、用了這麼久,總是用ArrayList,List,也沒好好總結一下,感覺挺打臉,沒辦法,你知道工作的,總是用啊用
1、我們經常需要存放多個數據(元素),所以就有需求了,就像容器一樣
a、集合類也被稱作容器類
b、一部分的集合類是位於java.util包下,這些類全部是單執行緒下使用的哦
c、在java1.5的時候,在java.util.concurrent包又提供了一些支援多執行緒的集合類
2、主要分類
a、Collection為首,然後擴充套件處一堆
b、Map,又擴展出一堆
3、Collection的基本層次關係
a、Iterable, Collection擴充套件了該interface,凡是實現了Iterable的,允許使用foreach進行遍歷,這點很重要
我們常說類實現了Iterable,這裡Collection也是interface,Collection擴充套件了Iterable,所以類實現了Collection,即相當於實現了Iterable
這個Iterable有一個抽象方法,叫做iterator(),還有兩個default方法。
Iterable是一個範型interface
//注意我把所有註釋和package、import全部刪除掉了 public interface Iterable<T> { Iterator<T> iterator(); default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } } default Spliterator<T> spliterator() { return Spliterators.spliteratorUnknownSize(iterator(), 0); } }
b、Collection是集合基本的interface,定義的規則裡,可以持有多個Object,每個Object也被稱為元素
c、List是Collection中最重要的擴充套件interface,List擴充套件了Collection,元素為有序(比如你每次遍歷時,都與最初儲存元素的順序一致),元素可以重複,即可以有相同的例項物件,預設情況下,按照新增元素的順序分配下標,比如第一個元素的元素是0,因為是線上性表尾部進行插入的嘛。
d、Set也是Collection下最重要的擴充套件interface,Set也擴充套件了Collection,代表一個集合,簡單理解為一個大水缸,放入元素的時候是完全沒有順序的,也就是說你每次遍歷時,跟你放入元素的順序無關,跟你各種訪問元素的順序無關,而且Set中不允許放入重複的元素
e、Queue又是一個擴充套件Collection的介面,一個佇列,牛13,在元素上,主要的要求是FIFO(First in First out),只要佇列的要求,即只能從佇列頭部出列(出隊)、佇列的尾部入列(入隊),即可,元素當然可以重複。牛13
4、Map的基本層次關係
a、先再介紹下Map,key-value元素,即對映關係元素,Map中的key不能重複,如果重複了,那就覆蓋了
b、Map中的value可以重複,這是自然的了
c、Map中的key、value可以為null,可以是任意型別的物件,必須是引用資料型別,基本資料型別不行
d、HashSet、是基於雜湊表實現的Set
e、先介紹到這裡吧,每個分類再開個大項來介紹吧