我有一个包含以下格式行的文件:
banana::yellow
orange::orange
apple::red
garlic::white
我想将文件读入映射,其中key
是::
的左侧,值是::
的右侧
我正在这样做以实现它:
try (Stream<String> stream = Files.lines(Paths.get(myFilePath))) {
List<String> myList = stream.collect(Collectors.toList());
Map<String, String> myMap = new HashMap<>();
for (String line : myList) {
String[] pair = line.split("::");
myMap.put(pair[0], pair[1]);
}
} catch (IOException e) {
e.printStackTrace();
}
但是,可以进一步简化它以便流直接生成我想要的地图吗?
Map<String, String> myMap = stream.somethinghere ??
谢谢!
答案 0 :(得分:4)
是的,您可以在map
操作内拆分行,然后collect
将其toMap
拆分为:
Map<String, String> myMap = stream
.map(line -> line.split("::"))
.collect(Collectors.toMap(pair -> pair[0], pair -> pair[1], (a, b) -> b));