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())

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