您的位置:

深入我们的编程世界:Map集合遍历

一、Map集合遍历赋值

Map myMap = new HashMap<>();
myMap.put(1, "apple");
myMap.put(2, "banana");

  

Map集合是一种键值对的数据结构,可以用于存储键值对的映射关系,其中键是唯一的。在上面的代码示例中,我们首先用put方法往myMap中添加了两个键值对,1-apple和2-banana。

二、Map集合遍历的方式和单列

Map myMap = 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集合遍历取值

Map myMap = 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

Map myMap = 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集合遍历方式,那么还有其他的遍历方式吗?答案是肯定的。

第一种方式是使用迭代器,如下所示:

Map myMap = 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表达式,如下所示:

Map myMap = 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值

Map myMap = 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表达式等等。每种方式都有各自的优缺点,开发者可以根据自身需求选择合适的方式进行遍历。希望本文对读者有所帮助!