Я создаю две карты из разных столбцов в CSV (разделенные табуляцией)
oldVal1 newVal1 2
oldVal2 newVal1 3
oldVal3 newVal1 11
.
.
.
и объединяю их вместе в конце. Позвольте мне предоставить только грязную реализацию:
public static void main(String[] args) throws FileNotFoundException {
InputStream somefile = new FileInputStream("d:\\dummyfile.csv");
Map<String, String> firstMap = new HashMap<>();
Map<String, String> secondMap = new HashMap<>();
Supplier<Stream<String>> streamSupplier = () -> new BufferedReader(new InputStreamReader(somefile, StandardCharsets.ISO_8859_1)).lines();
firstMap = streamSupplier.get()
.map(p -> p.split("\t"))
.collect(
Collectors.groupingBy(s -> s[1],
Collectors.mapping(g -> g[2],
Collectors.joining(","))));
secondMap = streamSupplier.get().map(p -> p.split("\t"))
.collect(Collectors.toMap(s -> s[0],
s -> s[2]));
firstMap.putAll(secondMap);
}
Проблема, с которой я столкнулся, заключается в том, что secondMap пуст.
Желаемый результат должен быть
Map<String, String>:
oldVal1 -> 2
oldVal2 -> 3
oldVal3 -> 11
newVal1 -> 2,3,11
Есть ли что-то, что мне не хватает в коде или как решить эту проблему другим способом? Спасибо за любую вашу помощь.