在Java中查找地图中第一个值的出现

时间:2016-09-04 17:10:08

标签: java lambda java-8

我想在Java中找到地图中第一个出现的值,并使用lambda表达式进行更改。如何使用Stream API实现?

下面是使用迭代器的代码。

Map<String, String> details = new LinkedHashMap<>();

Iterator<Entry<String, String>> entries = details.entrySet().iterator();
 while(entries.hasNext()){
     Map.Entry<String, String> entry = entries.next();
     if(Status.PENDING.equals(entry.getValue())) {
         details.put(entry.getKey(), Status.FAILED);
         break;
     }
 }

2 个答案:

答案 0 :(得分:1)

实现如下:

String matchingKey = details.entrySet().stream().filter(entry -> entry.getValue().equals(Status.PENDING)).map(Map.Entry::getKey).findFirst().orElse(null);
details.put(matchingKey, Status.FAILED);

答案 1 :(得分:0)

您需要Map Stream,然后filter以某种方式,然后map结果。