【发布时间】:2019-11-08 05:59:24
【问题描述】:
问题标题可能与其他帖子相同,但内容不同。所以请不要将其标记为重复。
问题:
我有以下课程:
public class SCDTO extends RDTO {
private List<String> sCPairs = Collections.emptyList();
public SCDTO(List<String> sCPairs) {
this.sCPairs = sCPairs;
}
//Getter setter
}
我正在尝试使用下面的 lambda 表达式来设置 sCPairs。
sCPairsObject.setSCPairs(
util.getSCMap().entrySet().stream()
.filter(entry -> entry.getValue().contains("abc"))
.collect(Collectors.toCollection(ArrayList<String>::new))
);
但我有一个编译错误说:
no instance(s) of type variable(s) exist so that Entry<String, List<String>> conforms to String
util.getSCMap 返回Map<String, List<String>>。
谁能解释一下为什么会发生这种情况以及如何解决?
谢谢。
【问题讨论】:
-
entrySet()将返回一个Set<Entry<K,V>>所以如果你想将它们收集到一个List<String>你将需要一个map(...)在两者之间 - 或者如果V实际上是一个 @987654332 @你甚至可能需要flatMap(...)。
标签: java generics lambda java-8