Java 8 为什么在执行flatmap()调用时会出现编译错误?
假设我有以下目标:Java 8 为什么在执行flatmap()调用时会出现编译错误?,java-8,java-stream,flatmap,Java 8,Java Stream,Flatmap,假设我有以下目标: public class DaylyData { private Date date; private List<Integer> numersList; // standard getters/setters public Map<Integer, Date> getIntToDate() { Map<Integer, Date> resultMap = new HashMap<>(); for(Inte
public class DaylyData {
private Date date;
private List<Integer> numersList;
// standard getters/setters
public Map<Integer, Date> getIntToDate() {
Map<Integer, Date> resultMap = new HashMap<>();
for(Integer number : getNumersList()) {
resultMap.put(number, getDate());
}
return resultMap;
}
如果我将结果分配给
流
,我将得到类型不匹配:无法从映射转换到流,flatMap
方法是Map
的特例,用于展平嵌套的流
,可选的
,以及其他一元工具
在您的情况下,您没有提供返回流的函数,因此它不能用作flatMap
param
您的函数可以与标准的map()
配合使用,不过:
resultList.stream()
.map(entity -> entity.getIntToDate()); // no compilation errors
您可以通过将结果包装到流
实例中来实现示例,但这并不比上面的示例有任何优势-仅出于教育目的这样做是有意义的:
resultList.stream()
.flatMap(entity -> Stream.of(entity.getIntToDate())); // no compilation error
这是“每天”而不是“每天”
resultList.stream()
.flatMap(entity -> Stream.of(entity.getIntToDate())); // no compilation error