Java 8 toMap IllegalStateException Duplicate Key

我有一个文件,其中包含以下格式的数据

1 2 3 

我想加载它以映射为{(1->1), (2->1), (3->1)}

这是Java 8代码,

 Map map1 = Files.lines(Paths.get(inputFile)) .map(line -> line.trim()) .map(Integer::valueOf) .collect(Collectors.toMap(x -> x, x -> 1)); 

我收到以下错误

 Exception in thread "main" java.lang.IllegalStateException: Duplicate key 1 

我该如何解决这个错误?

如果文件中没有重复项,代码将运行。

 Map map1 = Files.lines(Paths.get(inputFile)) .map(String::trim) .map(Integer::valueOf) .collect(Collectors.toMap(x -> x, x -> 1)); 

如果存在重复项,请使用以下代码获取该密钥的文件中出现的总数。

 Map map1 = Files.lines(Paths.get(inputFile)) .map(String::trim) .map(Integer::valueOf) .collect(Collectors.groupingBy(x -> x, Collectors.counting()); 

如果你想将你的值映射到1,pramodh的答案是好的。但是如果你不想总是映射到常量,使用“merge-function”可能会有所帮助:

 Map map1 = Files.lines(Paths.get(inputFile)) .map(line::trim()) .map(Integer::valueOf) .collect(Collectors.toMap(x -> x, x -> 1, (x1, x2) -> x1)); 

上面的代码与问题中发布的代码几乎相同。 但是如果它遇到duplicate key ,而不是抛出exception, 它将通过应用合并函数 ,通过获取第一个值来解决它