我想从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中工作,但是如果可以避免的话,我相信应该这样做。如果您没有副作用,则函数式编程最清晰。