如何使用Java 8流(Stream)来解决以下问题的代码:

huangapple go评论64阅读模式
英文:

How to write code for below problem using Java 8 stream

问题

Map<String, Integer> hm = new HashMap<>();

// hm中包含员工的姓名和年龄。
// 如何使用Java 8中的流(Stream)概念找到年龄大于25的所有员工的姓名?

// 我尝试了以下方法:

hm.entrySet().stream()
    .filter(entry -> entry.getValue() > 25)
    .map(Map.Entry::getKey)
    .collect(Collectors.toList());

// 有人可以纠正我吗?
英文:
Map&lt;String,Integer&gt; hm = new HashMap&lt;&gt;();

hm contains name and Age of Employees.
How to find the names of all employees whose age > 25 using java 8 streams concept

I attempted like this

hm.stream().filter(x-&gt;Map.Entry.getValue(x)&gt;25).collect(collectors.toList());

Could anyone correct me?

答案1

得分: 1

你不能直接通过 Map 获得流。您可以获得地图的 .entrySet(),然后按年龄进行过滤,并将名称收集到列表中。

List<String> list = hm.entrySet().stream()
                         .filter(x -> x.getValue() > 25)
                         .map(e -> e.getKey())
                         .collect(Collectors.toList());
英文:

You can't get stream over Map directly. You can get .entrySet() of the map then filter by age and collect names in a list.

List&lt;String&gt; list = hm.entrySet().stream()
                                 .filter(x -&gt; x.getValue() &gt; 25)
                                 .map(e -&gt; e.getKey())
                                 .collect(Collectors.toList());

huangapple
  • 本文由 发表于 2020年10月13日 00:11:36
  • 转载请务必保留本文链接:https://go.coder-hub.com/64321462.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定