I have a file which contains data in the following format
1
2
3
I want to load this to map as {(1->1), (2->1), (3->1)}
This is the Java 8 code,
Map map1 = Files.lines(Paths.get(inputFile))
.map(line -> line.trim())
.map(Integer::valueOf)
.collect(Collectors.toMap(x -> x, x -> 1));
I am getting the following error
Exception in thread "main" java.lang.IllegalStateException: Duplicate key 1
How do I fix this error?
解决方案
The code will run if there are no duplicates in the file.
Map map1 = Files.lines(Paths.get(inputFile))
.map(String::trim)
.map(Integer::valueOf)
.collect(Collectors.toMap(x -> x, x -> 1));
If there are duplicates use the following code to get the total number of occurrences in the file for that key.
Map map1 = Files.lines(Paths.get(inputFile))
.map(String::trim)
.map(Integer::valueOf)
.collect(Collectors.groupingBy(x -> x, Collectors.counting());