我有以下代码从文本文件读取行:
try (BufferedReader br = new BufferedReader(new InputStreamReader(Uio.decodeFrom(url)))) {
return br.lines()
.parallel()
.map(s -> s.split("\\s+")) // split by whitespace
.collect(
Collectors.groupingByConcurrent(
arr -> arr[0], // String 1
Collectors.groupingByConcurrent(
arr -> arr[arr.length-1], // String 2
Collectors.counting()
)
)
);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
Run Code Online (Sandbox Code Playgroud)
文本文件包含如下数据
String1 ... cols ... String2
string1data ... otherdata ... string2data
...
Run Code Online (Sandbox Code Playgroud)
我正在尝试按 和 进行分组String1并String2获取它们的计数。那么最终结果应该是一个Map<String, Map<String, Long>>. 然而,对于上面的代码,编译器说返回collect()一个 ConcurrentMap <Object, ConcurrentMap<Object, Long>>.
为什么键不是字符串?