2021-05-22

目录

Map集合遍历

一、entry()(Map.Entry)和entrySet()方式遍历map集合

二、keyset方法遍历

三、使用迭代器iterator的遍历


Map集合遍历

一、entry()(Map.Entry)和entrySet()方式遍历map集合,代码如下:

public class MapTraversalDemo {
    public static void main(String[] args) {
//        创建map集合,插入数据
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Java");
        map.put(2, "C++");
        map.put(3, "C");
        System.out.println(map);

//        使用map.entrySet和map.entry遍历
        for (Map.Entry<Integer, String> entry : map.entrySet()) {
            System.out.println("key:" + entry.getKey() + ";" + "value:" + entry.getValue());
        }
    }
}

输出结果:

 

static <K,V> Map.Entry<K,V> entry​(K k, V v)

映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。这些 Map.Entry 对象仅 在迭代期间有效;更确切地讲,如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过 setValue 在映射项上执行操作之外

Set<Map.Entry<K,V>> entrySet()

返回此映射中包含的映射关系的 Set 视图。该 set 受映射支持,所以对映射的更改可在此 set 中反映出来,反之亦然。如果对该 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过对迭代器返回的映射项执行 setValue 操作除外),则迭代结果是不确定的。set 支持元素移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从映射中移除相应的映射关系。它不支持 add 或 addAll 操作。

二、keyset方法遍历

map.keySet():返回map集合里的key组成的set集合。在利用key值得到对应的value。

public class MapTraversalDemo {
    public static void main(String[] args) {
//        创建map集合,插入数据
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Java");
        map.put(2, "C++");
        map.put(3, "C");
        System.out.println(map);

//        使用keySet方法:
        for (Integer key : map.keySet()) {
            System.out.println("key :" + key + " ; " + "value : " + map.get(key));
        }
    }
}

运行结果:

{1=Java, 2=C++, 3=C}
key :1 ; value : Java
key :2 ; value : C++
key :3 ; value : C

三、使用迭代器iterator的遍历

有两种情况:

1、利用map.keySet()方法先创建一个迭代器对象,这个对象的构成元素是map.keySet()方法返回的key。iterator.hasNext()判断迭代中是否还有值,iterator.next()返回下一个迭代中的下一个元素。

public class MapTraversalDemo {
    public static void main(String[] args) {
//        创建map集合,插入数据
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Java");
        map.put(2, "C++");
        map.put(3, "C");
        System.out.println(map);

//        使用迭代器iterator进行遍历:map.keySet()
        Iterator<Integer> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            Integer key = iterator.next();
            System.out.println("key : " + key + ";" + "value :" + map.get(key));
        }
    }
}

运行结果:

{1=Java, 2=C++, 3=C}
key : 1;value :Java
key : 2;value :C++
key : 3;value :C

2、不难发现,这种方法与第一种(顶部)其实只是多了一个迭代器的引用而已。

public class MapTraversalDemo {
    public static void main(String[] args) {
//        创建map集合,插入数据
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Java");
        map.put(2, "C++");
        map.put(3, "C");
        System.out.println(map);

//        使用迭代器iterator进行遍历:map.entrySet()
        Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry<Integer, String> entry = iterator.next();
            System.out.println(entry);
        }
    }
}

运行结果:

{1=Java, 2=C++, 3=C}
1=Java
2=C++
3=C

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值