1. 程式人生 > 其它 >JAVA基礎 - Map集合

JAVA基礎 - Map集合

一、常用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);
    }
}