我正在尝试将Set<String>
转换为Map
。但是我不确定keyMapper
和valueMapper
为什么不采用关键功能对象。
private static void populateHeader(Map<String, List<String>> headerMap,
Set<String> keys) {
headerMap= keys.stream()
.collect(Collectors.toMap(key -> key.toString(),parseLine(key -> key)));
}
错误消息是:
错误:(83,91)java:不兼容的类型:java.lang.String不是 功能界面
答案 0 :(得分:0)
headerMap= keys.stream().collect(Collectors.toMap(key -> key.toString(),parseLine(key -> key)));
大概parseLine(key -> key)
应该是key -> parseLine(key)
。从技术上讲,parseLine
可以返回正确类型(Function<String,String>
)的功能对象。
错误消息会有所帮助。
您可以这样写:
headerMap = keys.stream().collect(
Collectors.toMap(Function.identity(), key -> parseLine(key))
);
值得注意的是,headerMap
是一个参数,因此分配它有点奇怪。调用函数传递的值将不受影响。
答案 1 :(得分:0)
不知道为什么代码最初失败是在这里行! 对于此代码,我需要为每个需要加载字符串标签列表(即parseLine函数)的键获取一组键(设置键)。因此最后返回了键及其标签的地图
... Map> headerMap = keys.stream()。collect(Collectors.toMap(key-> key,key-> parseLine(getHeaderLine(key))))); ...
终于奏效了。 谢谢 詹姆斯