HashMap與LinkedHashMap型別集合

昏睡的云雪發表於2024-07-19

對於HashMap

特點:

  • 特點無序,沒索引,不重複
  • 保證鍵的唯一

類似於Map型別的集合,都可以在書名號中新增一個類名和一個資料型別來新增元素,也用“put”,也可以遍歷集合元素

 Set<Student> keys = hm.keySet();  //獲取鍵值
        for (Student k : keys) {
            String key = hm.get(k);  //獲取新增的地址
            System.out.println(key+"--"+k);
        }

如果打算用於統計方面,此次以隨機資料為例。

首先設定一個陣列來存放選項,讓這些選項充當鍵

// 建立一個陣列用來儲存可能的鍵
String[] arr = {"A","B","C","D"};

透過Random”命令建立一個隨機變數

 Random r = new Random();  // 產生隨機資料的物件

然後設定一個介面,進入迴圈

ArrayList<String> list = new ArrayList<>();
        Random r = new Random();  // 產生隨機資料的物件
        for (int i = 0; i < 80; i++) {  // 隨機生成八十次
            int index = r.nextInt(arr.length);  // 生成的數字最大不超過陣列“arr”的長度
            list.add(arr[index]); // 將生成的索引對應的元素新增到列表中
        }

此處建立了一個名叫“list”的介面,並將隨機生成的資料匯入集合中,此時用“HashMap”來建立一個集合

HashMap<String, Integer> hm = new HashMap<>();

然後用增強“for”迴圈的方法來遍歷集合。

"集合名.for"確定後自動生成,然後

for (String name : list) {
            // 首先判斷該集合中是否存在該元素
            if (hm.containsKey(name)) {
                // 當存在時,獲取已經有的票數並增加1
                int num1 = hm.get(name);
                hm.put(name, num1 + 1); //存入集合並新增數值
            } else {
                hm.put(name, 1); // 第一次出現,設定值為1
            }
        }
        //列印HashMap的內容驗證
       System.out.println(hm);

此時如果想要求那個選項的數最大,則

//求max
        int max = 0;
        Set<Map.Entry<String,Integer>> entries = hm.entrySet();
        //將票數傳遞給一個集合
        for (Map.Entry<String, Integer> entry : entries) {
            int count = entry.getValue(); //獲取集合中的數值
            if(count >max){ //透過比較選出最大值
                max = count;
            }
        }
        System.out.println(max);

對於"LinedHashMap"

特點:

  • 存取有序,沒索引,不重複
  • 保證鍵的唯一,也會覆蓋同一鍵的資料,後蓋前

其他與HashMap型別相同。

相關文章