一、Map集合遍历赋值
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana");
Map集合是一种键值对的数据结构,可以用于存储键值对的映射关系,其中键是唯一的。在上面的代码示例中,我们首先用put方法往myMap中添加了两个键值对,1-apple和2-banana。
二、Map集合遍历的方式和单列
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); for(Map.Entry entry : myMap.entrySet()){ System.out.println("Key: "+ entry.getKey() +", Value: " + entry.getValue()); }
遍历一个Map集合的方式有多种,其中entrySet方法返回一个Set集合,其中存放的是Map.Entry对象,每个Map.Entry对象代表一个键值对。我们可以使用for循环和增强型for循环分别遍历出每个键值对的键和值。在上面的代码示例中,我们用增强型for循环遍历出了每个键值对,并输出了键和值。
与单列不同的是,Map集合遍历需要注意每个键是唯一的,因此不能像单列一样直接使用下标索引。
三、Map集合遍历取值
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); String value1 = myMap.get(1); String value2 = myMap.get(2); System.out.println(value1); System.out.println(value2);
Map集合的get方法可以获取一个键对应的值,如上面的代码示例所示,我们用get方法分别获取了键1和键2所对应的值,即apple和banana,并将它们输出。
四、Map集合遍历key
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); Set keySet = myMap.keySet(); for(Integer key : keySet){ System.out.println("Key: "+ key +", Value: " + myMap.get(key)); }
除了通过entrySet方法获取全部的键值对外,我们也可以通过keySet方法获取到键的Set集合,然后通过for循环遍历Set集合中的每个键,并用get方法获取到对应的值。需要注意的是,在使用get方法时,我们需要传入键作为参数。
五、Map集合遍历的方式
上面介绍了两种常用的Map集合遍历方式,那么还有其他的遍历方式吗?答案是肯定的。
第一种方式是使用迭代器,如下所示:
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); Iterator > iter = myMap.entrySet().iterator(); while(iter.hasNext()){ Map.Entry entry = iter.next(); System.out.println("Key: "+ entry.getKey() +", Value: " + entry.getValue()); }
这种方式的代码与entrySet方法遍历是比较类似的,都需要通过Iterator迭代器来实现。不同的是,使用Iterator迭代器需要显式地调用next方法,而增强型for循环是不需要显式调用的。
第二种方式是使用lambda表达式,如下所示:
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); myMap.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value));
这种方式使用了forEach方法,其参数是一个lambda表达式,可以用来遍历Map集合中的每个键值对。需要注意的是,如果要在lambda表达式内部调用多条语句,则需要用{}将这些语句包裹起来。
六、Map集合遍历方式优缺点
上面介绍了多种方式来遍历Map集合,那么它们各自有什么优缺点呢?
- entrySet方法遍历优点在于,可以同时获取键和值,而且操作简单直观。缺点是需要新建一个Set集合,占用一定内存。
- keySet方法遍历优点在于,遍历方便,不需要使用Map.Entry对象。缺点是需要通过键来获取值,效率会略低。
- 使用迭代器遍历的优点是,随机访问性能好,能够快速定位到某个位置进行操作。缺点是代码相对比较繁琐。
- lambda表达式遍历的优点在于,写法简单、直观。缺点是有些开发者可能不太习惯使用lambda表达式。
七、Map集合遍历几种方式
以上介绍了四种常用的Map集合遍历方式,除此之外,还有一些其他的方式也可以用来遍历Map集合,例如使用values方法获取值的Collection集合,或者使用 forEachEntry 方法遍历等等。开发者可以根据具体需求来选择合适的遍历方式。
八、Map集合遍历替换key值
MapmyMap = new HashMap<>(); myMap.put(1, "apple"); myMap.put(2, "banana"); myMap.keySet().stream() .filter(key -> key == 1) .findAny() .ifPresent(key -> myMap.put(key, "orange")); System.out.println(myMap);
除了普通的遍历方式外,我们还可以使用Stream API进行Map集合的遍历,并对其中的键或值进行替换。上述代码中,通过filter方法筛选出键为1的键值对,并通过forEach方法将其键的值替换为orange。
本文介绍了多种Map集合遍历的方式,包括entrySet、keySet、迭代器、lambda表达式等等。每种方式都有各自的优缺点,开发者可以根据自身需求选择合适的方式进行遍历。希望本文对读者有所帮助!