Java常用工具類 - 集合


集合概述

  1. Java中的集合是工具類,可以存儲任意數量的具有共同屬性的對象。與數組不同,集合的長度可以動態改變,所以數組適合去存儲固定長度的數據,集合適合去存儲不固定長度的數據。
  2. 集合的應用場景:
    1)無法預測存儲數據的數量。
    2)存儲具有一對一關系的數據(比如某件商品,其商品編號只對應這件商品)。
    3)需要進行數據的增刪。
    4)數據重復問題。

集合框架的體系結構

Collection:(類的對象) 三個子接口:
List:(序列) 有序的、允許重復的 主要實現類:
ArrayList:長度動態增長的數組
Queue:(隊列) 有序的、允許重復的 主要實現類:
LinkedList:鏈表的內容
Set:(集)無序的、不允許重復的 主要實現類:
HashSet:哈希值
Map:(鍵值對)主要實現類:
HashMap:哈希表

List集合

List(列表):
1)元素有序 可重復 -----稱為序列 1223
2)可以 精確 的控制 每個元素的插入位置,或刪除某個位置的元素
3)主要有兩個實現類 ArrayList LinkedList
ArrayList和數組比較相似,不同就是ArrayList存儲個數會動態變動的。

ArrayList:
1)底層是由數組實現的
2)長度 動態增長
3)在列表尾部 插入或刪除數據 非常有效
4)但在列表中間插入數據時會產生大量的元素復制,效率較低,所以更適合 查找與更新新數據
5)元素可以為null值

常用方法使用:

List list = new ArrayList();//導入java.util包
list.add("Java"); //添加數據
list.size(); //列表中元素個數
list.get(int i); //顯示列表中i處元素
list.remove(int index); //移除i處元素
list.remove(Object o); //移除列表中元素
list.contains(Object o); //查詢列表中是否包括某個對象

Set集合

  1. Set:元素無序並且不可以重復的集合,被稱為集。
  2. HashSet:
    1)元素無序且不可重復,HashSet是Set的一個重要實現類,稱為哈希集;
    2)HashSet中只允許有一個null元素;
    3)具有良好的存取和查找性能。
    4)HashSet中的元素無序並且不可以重復
    5)HashSet的底層其實是HashMap。
    6)HashSet默認容量是16,默認的加載因子為0.75

什么是加載因子(負載因子/裝載因子)?
用於表示哈希表中元素填滿的程度。
沖突的機會越大,則查找的成本越高。反之,查找的成本越低,從而查找的時間越少。

HashMap中的加載因子
①new HashMap();
初始容量是16,加載因子loadFactor=0.75,默認容量是16*0.75=12
②new HashMap(int initialCapacity);
給定自定義的loadFactor.
③new HashMap(int initialCapacity, fload loadFactor);
自定義初始容量,自定義加載因子。

常用方法

迭代器:Iterator接口可以以統一的方式對各種集合元素進行遍歷
hasNext():檢測集合中是否還有下一個元素
next():返回集合中的下一個元素
把集合添加到迭代器中:(導入包)Iterator 迭代器名=集合名.iterator()方法
遍歷迭代器並輸出:

Map

Map是一個接口,無法進行實例化操作。

可以定義一個引用指向HashMap()的方法構造一個Map類,

添加鍵值對

向Map中添加元素時使用 對象名.put(key, value)的方法添加鍵值對。

遍歷Map

方法一:使用iterator定義一個引用,在指向Map的實例化對象中使用對象名.values()f返回Map類中所有值的內容。

Iterator<String> it = objName.values().iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

方法二:使用指向Map的實例化對象調用 entrySet() 方法,返回一個集合,集合里面包含了Map類當中所有的鍵值對。

Set<Map.Entry<String, String>> entries = objName.entrySet();
for (Map.Entry<String, String> en : entries) {
    System.out.print(en.getKey()+"-");;
    System.out.println(en.getValue());
}

查找某個key

keySet()方法將map中所有key值的取出,返回值是個只存放key值的Set集合

Set<String> keySet = objName.keySet();
for (String key : keySet) {
    if (strSearch.equals(key)) {
        System.out.println("找到了!"+"鍵值對為:"+key+"-"+objName.get(key));
        break;
    }
}

檢查是否存在某個鍵

objName.containsKey(keyName);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM