3

我需要过滤一个 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()));
}

该方法应在过滤 Map 后返回一个包含所有键(匹配值)的列表。

如何处理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>
4

1 回答 1

3

toList不带任何参数。您可以使用mapEntrys 的 Stream 转换为键的 Stream。

public List<String> getEqualPointList(Point point) {
    return this.points
               .entrySet()
               .stream()
               .filter(p -> p.getValue().isEqual(point))
               .map(e -> e.getKey())
               .collect(Collectors.toList());
}
于 2015-02-01T14:05:10.660 回答