• java Map及Map.Entry详解


    Map是java中的接口,Map.Entry是Map的一个内部接口。

    Map提供了一些常用方法,如keySet()、entrySet()等方法。

    keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

    Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

    map不能直接使用迭代器因为map没有像set继承Collection所以得如下方式使用

    由以上可以得出,遍历Map的常用方法:

    1.Mapmap=newHashMap();

    Ireratoriterator=map.entrySet().iterator();

    while(iterator.hasNext()){

    Map.Entryentry=iterator.next();

    Objectkey=entry.getKey();

    //

    }

    或者

    for (Map.Entry entry : map.entrySet()) {}

    2.Mapmap=newHashMap();

    SetkeySet=map.keySet();

    Ireratoriterator=keySet.iterator;

    while(iterator.hasNext()){

    Objectkey=iterator.next();

    Objectvalue=map.get(key);

    //

    }

    另外,还有一种遍历方法是,单纯的遍历value值,Map有一个values方法,返回的是value的Collection集合。通过遍历collection也可以遍历value,如

    Mapmap=newHashMap();

    Collectionc=map.values();

    Iteratoriterator=c.iterator();

    while(iterator.hasNext()){

    Objectvalue=iterator.next();

    }

    1 import java.util.Collection; 2 import java.util.HashMap; 3 import java.util.Iterator; 4 import java.util.Map; 5 import java.util.Set; 6
    7 public class MapDemo { 8
    9 public static void main(String[] args) {
    10 Map map = new HashMap();
    11
    12
    13 map.put(8, “zhaoliu”);
    14 map.put(9, “zhaoliu”);
    15 map.put(1, “xiaoqiang”);
    16 map.put(6, “wangcai”);
    17 map.put(7, “zhaoliu”);
    18 map.put(99, “zhaoliu”);
    19 map.put(87, “xiaoqiang”);
    20 map.put(42, “wangcai”);
    21
    22 show1(map);
    23
    24 show2(map);
    25
    26 showValue(map);
    27
    28 }
    29
    30 public static void showValue(Map map) {
    31 Collection values = map.values();
    32 Iterator it = values.iterator();
    33 while (it.hasNext())
    34 {
    35 System.out.println(it.next());
    36 }
    37 }
    38
    39 public static void show2(Map map) {
    40 //通过Map转成Set就可以迭代
    41 //找到了另一种方法。 entrySet
    42 //该方法将键和值的映射关系作为对象存储到了Set集合中,而这个映射关系的类型就是Map.Entry类型(结婚证)
    43 //就跟Set xxxx=new HashSet<>();中的跟>是一样的

    44 Set> entrySet = map.entrySet();
    45 Iterator> it = entrySet.iterator();
    46 /*
    47 *也可以写成 Iterator> it = map.entrySet().iterator();
    48 */
    49
    50 while(it.hasNext())
    51 {
    52 Map.Entry me = it.next();
    53 Integer key = me.getKey();
    54 String value = me.getValue();
    55 System.out.println(key+“::”+value);
    56
    57 }
    58 }
    59
    60 public static void show1(Map map) {
    61 //取出map中的所有元素。
    62 //原理:通过keySet方法获取map中所有的键所在的Set集合,在通过Set的迭代器获取到每一个键,
    63 //在对每一个键通过map集合的get方法获取其对应的值即可。
    64
    65 Iterator it = map.keySet().iterator();
    66 /*
    67 * 相当于 Set keySet = map.keySet();
    68 * Iterator it = keySet.iterator();
    69 *
    70 */
    71
    72 while (it.hasNext())
    73 {
    74 Integer key = it.next();
    75 String value = map.get(key);
    76 System.out.println(key+“=”+value);
    77 }
    78 }
    79
    80 }

  • 相关阅读:
    自动翻译 android/res/values/strings.xml
    猿创正文|C++——模板初阶|泛型编程|函数模板|函数模板概念 |函数模板格式|函数模板的实例化|模板参数的匹配原则|类模板 |类模板定义格式|习题
    [Linux版本Debian系统]安装cuda 和对应的cudnn以cuda 12.0为例
    RK3288 Android11 mini-pcie接口 4G模组EC200A适配(含自适应功能)
    运行deepspeech训练,报出如下错误,不知道如何解决
    【云原生之kubernetes实战】使用helm在k8s集群下部署DataEase可视化分析平台
    猿创征文丨赶紧进来修内功!!! 详细讲解数据在内存中的存储(浮点数篇)
    【Python脚本进阶】2.2、构建一个SSH僵尸网络(中):用Pxssh暴力破解SSH密码
    [ros2实操]2-ros2的消息和ros1的消息转换
    Linux进程终止
  • 原文地址:https://blog.csdn.net/m0_67401835/article/details/126387010