Java集合概述

常用集合關係圖

在這裏插入圖片描述

集合方法關係圖

在這裏插入圖片描述

Collection

  • 定義
    • Collection是單列集合, 用於存儲單個元素
  • 分類
    • List 集合中的元素是有序的,可以存放重複元素
    • Queue 隊列, 除優先級外, 保持先進先出的原則(基本不用)
    • Set 集合中的元素是無序的, 不能存放重複的元素

List

  • 定義

    • List集合是有序的,可以儲存重複的數據
    • List集合通過記錄元素在集合中的位置來準確的查找元素
  • List集合體系

    • ArrayList 底層使用數組(線程不安全)
    • LinkedList 底層使用鏈表
    • Vector 底層使用數組(線程安全的,不推薦使用)

Set集合

  • 定義
    • Set集合存儲的元素是無序的, 而且不允許儲存重複的元素
    • 每當有新的元素存入的時候,Set集合會先去過濾, 如果發現和集合中現有元素出現重複, 就不在允許添加

Map集合

  • 定義

    • Map集合是一個雙列集合,以鍵值對的形式存在
    • 將鍵和值捆綁到一起存放(Map.Entry)
    • 一個映射不能包含重複的鍵
    • 如果出現相同的鍵,會用新的值覆蓋老的值
    • 每個鍵最多隻能映射到一個值
  • Map接口和Collection接口的不同

    • Map是雙列的,Collection是單列的
    • Map集合的數據結構針對鍵有效, 跟值無關, Collection 集合的數據結構是針對元素有效
  • 存儲原理解析

    • 當我們將key和value存入Map集合的時候, map集合會創建一個Map.Entry對象包裹住鍵值對然後通過key計算出一個角標, 然後存入進入集合中

遍歷方式

迭代器

  • 定義

  • 集合是用來存儲元素,存儲的元素需要查看,那麼就需要迭代(遍歷)

  • 迭代器的使用

    • Collection c = new ArrayList(); c.add()//ArrayList c = new ArrayList();
      //HashSet  s  = new HashSet();
      Iterator it = c.iterator();
      //Iterator it= 單列集合.iterator();
      while (it.hasNext()) {//判斷是否有下一個元素,如果有則返回true,否則返回false
          // 如果有就取出這個元素
          Object object = (Object) it.next();//返回當前指針所在位置上的元素
          System.out.println(object);
      }
      
      

Foreach

  • foreachd 的使用格式

    /*	
    for(目標容器中的數據類型	臨時變量名 	:	目標容器) {
    
    }
    */
    

遍歷的過程中增刪集合中的元素

  • 三種迭代方式的刪除
    • 普通for循環,可以刪除,但是需要索引(可以用但有邏輯問題)
    • 迭代器,可以刪除,但是必須使用迭代器自身的remove方法,否則會出現併發修改異常
    • 增強for循環不能刪除

泛型(瞭解)

  • 預編譯我們的集合,規定了本集合中只能存放指定類型的數據
  • 保證數據的統一性、純潔性
  • 例:ArrayList<>

ArrayList,HashSet,HashMap遍歷

ArrayList a01 = new ArrayList();
HashSet   s01 = new HashSet();

//1、循環for-while
for(int i=0;<a01.size();i++)//或while
    Sysout.println(a01.get(i))
//2、迭代器
Iterator it =a01.iterator();
Iterator it =S01.iterator();//set 除了迭代器定義不同,其它相同
while(it.hasNext()){
    Object obj=(Object) it.next();
    Sysout->obj;
}

//3、for-each
//for(Object obj :s01)set這裏改一下其它一致
for(Object obj: a01)
    Sysout->obj
//================================================    
//HashMap 的遍歷比較特殊,不可直接遍歷,需要轉換一下
HashMap m=new HashMap();

//1>     K ==> V   先找到key值來找到v值
Set keys=m.keySet();

//2> entry(實例-[key-value鍵值對封裝成set集合])
Set e=m.entrySet();
//Set<Map.Entry<E,E> > en=m.entrySet();3>泛型後,可分別輸出

//遍歷key--迭代器    或  foreach(不寫)
Iterator it=keys.iterator();
while(it.hasNext()){
    Object obj=(Object ) it.next();
    sysout->  m.get(obj)       //V 值
        //K==>V
}

//Iterator<Entry<E,E>> it=en.iterator();
//while(it.hasNext()){
//    Map.Entry<E,E> e=it.next();
//	  sys->e.getKey();
//	  Sys->e.getValue();
//}
Iterator it= e.iterator();
while(it.hasNext()){
    sys->it.next()
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章