JAVA基礎 - Map集合
阿新 • • 發佈:2022-01-28
一、常用API
package com.java.base; /* 目標:認識map體系的特點:按照鍵無序、不重複、無索引,值不做要求; 一、Map集合體系特點 1、map集合的特點都是由鍵決定的 2、map集合的鍵是無序、不重複的,無索引的,值不做要求(可以重複) 3、map集合後面重複的鍵對應的值會覆蓋前面重複鍵的值 4、map集合的鍵值對都可以為null 二、map集合實現類特點 1、HashMap:元素按照鍵是無序、不重複、無索引,值不做要求(與map體系一致) 2、linkedHashMap:元素按照鍵是有序、不重複、無索引,值不做要求 3、TreeMap:元素按照鍵是排序、不重複、無索引,值不做要求 **/ import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { //1、建立一個map集合物件 Map<String,Integer> maps = new HashMap<>(); maps.put("nike",3); maps.put("anta",123); maps.put("nike",300);//會覆蓋前面的 maps.put("java",3); maps.put(null,null); System.out.println(maps);//輸出結果:{java=3, nike=300, anta=3, null=null} //2、清空集合 //maps.clear(); //System.out.println(maps); //3、判斷集合是否為空,為空返回true System.out.println(maps.isEmpty());//集合不為空,故返回false//4、根據鍵獲取對應的值:get System.out.println(maps.get("java"));//輸出3 System.out.println(maps.get("斐樂"));//獲取不存在的鍵值,則輸出null //5、根據鍵刪除整個元素(刪除鍵會返回鍵的值) System.out.println(maps.remove("anta")); //6、判斷是否包含某個鍵,包含返回true System.out.println(maps.containsKey("java")); //7、判斷是否包含某個值 System.out.println(maps.containsValue(100));//不包含,返回false //8、獲取全部鍵的集合,keyset Set<String> sets = maps.keySet(); System.out.println(sets); //9、獲取全部值的集合,Collection values Collection<Integer> values = maps.values(); System.out.println(values); //10、集合的大小 System.out.println(maps.size()); } }
二、Map遍歷方式:鍵找值
package com.java.base; import java.util.HashMap; import java.util.Map; import java.util.Set; public class MapDemo { public static void main(String[] args) { //1、建立一個map集合物件 Map<String,Integer> maps = new HashMap<>(); maps.put("娃娃",30); maps.put("iphoneX",100); maps.put("huawei",1000); maps.put("生活用品",10); maps.put("手錶",10); System.out.println(maps);//輸出結果:{huawei=1000, 手錶=10, 生活用品=10, iphoneX=100, 娃娃=30} //2、鍵找值:第一步,先拿到集合的全部鍵 Set<String> sets = maps.keySet();//maps.keySet() 此處快捷鍵alt+回車,選第二個 //3、第二步,遍歷每個鍵,根據鍵提取值 //sets.for 回車 ,便快捷輸出foreach語句 for (String set : sets) { int value = maps.get(set);//獲取鍵的值 //輸出結果:huawei======>1000 //手錶======>10 //生活用品======>10 //iphoneX======>100 //娃娃======>30 System.out.println(set +"======>"+value); } } }
三、案例
package com.java.base; /* 需求:統計投票人數 某個班級80名學生,現在需要組成秋遊活動,班長提供了四個景點依次是(ABCD),每個學生只能選擇一個景點,請統計出最終哪個景點想去的人數最多 分析: 1、將80個學生選擇的資料拿到程式中去 2、定義map集合用於儲存最終統計的結果 3、遍歷80個學生選擇的資料,看map集合中是否存在,不存在存入“資料=1”,存在則其對應值+1 */ import java.util.HashMap; import java.util.Map; import java.util.Random; public class MapDemo { public static void main(String[] args) { //1、把80個學生選擇的資料拿進來 String [] selects = {"A","B","C","D"}; StringBuilder sb = new StringBuilder(); Random r = new Random(); for (int i = 0; i < 80; i++) { //BDCABDCCCCDACCCCBABABBCBAAADDCBBDCADDDCBDBDCDDAAACACACCABBDDAACBCBCACBBDAACDBADB sb.append(selects[r.nextInt(selects.length)]); } System.out.println(sb); //2、定義一個map集合記錄最終統計的結果:A=30,B=20,C=20,D=10 Map<Character,Integer> infos = new HashMap<>(); //3、遍歷80個學生選擇的資料 for (int i = 0; i < sb.length(); i++) { //4、提取當前選擇景點字元 char ch = sb.charAt(i); //5、判斷map集合中是否存在這個鍵 if(infos.containsKey(ch)){ //讓其值+1 infos.put(ch,infos.get(ch)+1); }else { //說明此景點是第一次被選 infos.put(ch,1); } } //4、輸出集合:{A=20, B=19, C=23, D=18} System.out.println(infos); } }