我想从BufferedReader中读取行,将String分成两部分,并提供给BiConsumer。无需事先将两个分割的字符串收集到Map就能完成吗?

例:

bufferedReader.lines()
    .collect(Collectors.toMap(l -> l.split(",")[0], l -> l.split(",")[1]))
    .forEach(translations1::put);


可以通过某种方式删除Collectors.toMap来改善此情况吗?

最佳答案

我要做的就是保留toMap

Map<String, String> map = bufferedReader.lines()
                                        .map(l -> l.split(",", 2))
                                        .collect(Collectors.toMap(a -> a[0], a -> a[1]));


除非有我缺少的要求,否则toMap似乎值得保留。

顺便说一句,如果您想要一个功能性的解决方案,则应尝试避免使用forEach或任何修改状态的lambda。它可以在Java中工作,但是如果可以避免的话,我相信应该这样做。如果您没有副作用,则函数式编程最清晰。

08-27 10:32