我想用“字符串”作为键,将“行”作为值填充地图,我的代码:
private Map<String,Row> getMapFromDataset(Dataset<Row> dataset,List<String> mapColumns) {
Map<String,Row> map = new HashMap<>();
dataset.foreach((ForeachFunction<Row>) row ->
map.put(getKey(mapColumns,row),row) //This works
);
return map; //Map is empty when returning!
}
我的getKey()方法(尽管我认为不是问题的原因):
private String getKey(List<String> mapColumns,Row row) {
StringBuffer sb = new StringBuffer(256);
for(String col : mapColumns){
sb.append((String)row.getas(col));
}
return sb.toString();
}
尽管它可以编译并运行无错误,但映射始终为空。
我注意到的是,如果我在第一次插入后立即检查地图的大小,则地图的大小为1,因此项目插入有效,但是返回的地图为空
我还阅读到lambda中使用的变量应该是最终变量,这可能可以解释问题。
有提示吗?