编程语言
首页 > 编程语言> > java-过滤(使用流)时如何从地图还原列表

java-过滤(使用流)时如何从地图还原列表

作者:互联网

我需要过滤一个HashMap

Map<String, Point> points = new HashMap<String, Point>();

为它的一些价值,并有一种方法

public List<String> getEqualPointList(Point point) {
    return this.points.entrySet().stream().filter(p -> p.getValue().isEqual(point)).collect(Collectors.toList(p -> p.getKey()));
}

过滤地图后,该方法应返回包含所有键(匹配值)的列表.

如何处理collect()?我收到一条错误消息

Multiple markers at this line
- The method toList() in the type Collectors is not applicable for the arguments 
  ((<no type> p) -> {})
- Type mismatch: cannot convert from Collection<Map.Entry<String,Point>> to
  List<String>

解决方法:

toList不接受任何参数.您可以使用map将条目流转换为键流.

public List<String> getEqualPointList(Point point) {
    return this.points
               .entrySet()
               .stream()
               .filter(p -> p.getValue().isEqual(point))
               .map(e -> e.getKey())
               .collect(Collectors.toList());
}

标签:collectors,java-8,java-stream,hashmap,java
来源: https://codeday.me/bug/20191120/2046594.html