1. 程式人生 > >Java之集合框架collections framework(屌絲版,基於Java1.8)

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、先介紹到這裡吧,每個分類再開個大項來介紹吧