javase第二十一講:Map.Entry

題目回顧:從控制檯輸入字母,總計出現的字母次數

方法一:使用HashMap做

package Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
/**
 * @Auther: Xinbai
 * @Date:2020/5/21 14:11
 */
public class MapTest04 {
    public static void main(String[] args) {

                HashMap map = new HashMap();

                //將用戶輸入的單詞存入args[] 中,其中args[i]表示索引爲 i 的單詞
                for(int i = 0; i < args.length; i++){

                    //判斷這個單詞的鍵不存在,則直接放入Map中。
                    if(map.get(args[i]) == null){
                        map.put(args[i], new Integer(1)); //值爲1,注意不能直接寫原生數據類型1,而是應該用包裝類。
                    }

                    //否則,這個單詞存在,則將單詞key對應的value值取出加1再放入Map中。
                    else{
                        //	map.put(args[i], new Integer(((Integer)map.get(args[i])).intValue() + 1)); 可讀性不好,分開寫
                        Integer in = (Integer)map.get(args[i]); //取出以前的值
                        Integer value = new Integer(in.intValue() + 1); //將這個值加 1
                        map.put(args[i], value);//將加1 後的值存入Map中
                    }
                }

                //使用迭代器輸出HashMap中的信息。
                Set set = map.keySet();
                for(Iterator iter = set.iterator(); iter.hasNext();){
                    String key = (String)iter.next();
                    Integer value = (Integer)map.get(key);
                    System.out.println(key + " : " + value);
                }
            }
}

Map.Entry

首先要了解Map的鍵值對,key—value。
來個例子:一一對應

package Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/**
 * @Auther: Xinbai
 * @Date:2020/6/4 14:39
 */
public class MapEntry {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put("張三", "小三");
        map.put("李四", "小四");
        map.put("王五", "小五");
        map.put("新白","小白");

        Set set = map.keySet();
        for (Iterator iter = set.iterator(); iter.hasNext(); ) {
            String key = (String) iter.next();
            String value = (String) map.get(key);
            System.out.println(key + "--" + value);
        }
    }
}

在這裏插入圖片描述

【注意】:Map.Entry表示Entry是Map內部類

內部類及實例內部類的寫法:

public class A{
public classB{
}
}
A a = new A();
A.B b = new A.B();
[說明:其實內部類很複雜,這邊只是大概一個概括,將來會有另起一講專門將內部類的使用方法]

看源碼:Map中關於Entry的:
在這裏插入圖片描述
修改一下上面的程序:

package Map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**
 * @Auther: Xinbai
 * @Date:2020/6/4 14:39
 */
public class MapEntry {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put("張三", "小三");
        map.put("李四", "小四");
        map.put("王五", "小五");
        map.put("新白", "小白");

        Set set = map.entrySet();
        for (Iterator iter = set.iterator(); iter.hasNext(); ) {
            //這邊要強制類型轉換,所以要知道其子類型,這邊可以知道其子類型爲Map.Entry類型
            Map.Entry entry = (Map.Entry)iter.next();
            String key = (String) entry.getKey();
            String value = (String) entry.getValue();
            System.out.println(key + "--" + value);
        }
    }
}

在這裏插入圖片描述
Map.Entry這個類型維護着一對信息,其中一個是key,一個是value(getKey() 和 getValue())

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章