Java集合框架中類和接口之間的關係

 

目錄

Java集合框架中類和接口之間的關係

Collection常用方法 

Map常用方法 

List、Map、Set的應用場景

 

Java集合框架中類和接口之間的關係

首先,我發現了這樣一幅圖比較形象的描述

了Java集合框架中類和接口之間的關係:

第一張圖(左): 

Collection繼承了Iterable接口。List是鏈表 ,Queue 是隊列,  Set 是集合,注意集合中的元素是不能重複的。AbstractList是抽象隊列,繼承了List;Deque是雙端隊列,繼承了Queue; SortedSet是排序集合,繼承了Set。

詳細看看底下的類我們會發現
1. stack是棧,繼承了Vector
2. ArrayList是順序表,底層是用數組實現的
3. LinkedList是鏈表,底層是用雙向鏈表實現的
4. PriorityQueue是優先級隊列,底層是用堆(二叉樹)實現的
5. TreeSet是二叉搜索樹(排序)
6. HashSet是哈希表

接口之間的關係:

1. Collection :用來存儲管理一組對象 objects ,這些對象一般被成爲元素 elements
2. Set : 元素不能重複,背後隱含着查找/搜索的語義
3. SortedSet : 一組有序的不能重複的元素
4. List : 線性結構
5. Queue : 隊列
6. Deque : 雙端隊列
7. Map : 鍵值對 Key-Value-Pair ,背後隱含着查找/搜索的語義
8. SortedMap : 一組有序的鍵值對
 
第二張圖(右):

1. HashMap 實現了Map,是哈希表(不具有排序功能)
2. TreeMap 實現了SortMap,是二叉搜索樹(具有排序功能)
ps:
Map存放數據根據key的值,進行哈希。然後存放到哈希表的對象的index下標的位置
key值一般不重複(如果重複會被覆蓋)
哈希表的CURD的時間複雜度是O(1)

 

Collection常用方法 

 boolean add(E e);
將元素e放入集合中
 void clear();
刪除集合中所有元素
boolean isEmpty();
判斷集合是否爲空
 boolean remove(Object e);
如果元素e出現在集合中,刪除其中一個
int size(); 
返回集合中元素個數
Object[] toArray();
返回一個裝有所有集合中元素的數組

Map常用方法 

V get(Object k);
根據指定的 k 查找對應的 v
V getOrDefault(Object k, V defaultValue);
根據指定的 k 查找對應的 v,沒有找到用默認值代替
V put(K key, V value)
將指定的 k-v 放入 Map
boolean containsKey(Object key) 
判斷是否包含 key
boolean containsValue(Object value)
判斷是否包含 value
Set<Map.Entry<K, V>> entrySet()
將所有鍵值對返回
boolean isEmpty()
判斷是否爲空
int size()
返回鍵值對的數量

基本打印方式

基本方式主要有三種:

1.直接打印

        System.out.println(list);

2.for-each打印(一個類只有實現Iterable接口,才能用for-each打印) 

        for(Map.Entry<String,String> entry : map.entrySet()) {
            System.out.println(entry.getKey());
            System.out.println(entry.getValue());
        }

3.Array

         System.out.println(Arrays.asList());

 

 

List、Map、Set的應用場景

List-有序可重複

      ArrayList:底層由數組實現,查詢快,增刪慢。線程不安全,效率高。

      Vector:底層由數組實現,查詢快,增刪慢。線程安全,效率底。

      LinkedList:底層由鏈表實現,查詢慢,增刪快。線程不安全,效率高。

Set-無序唯一

Map-鍵值對存儲

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章