我有一个包含重复元素的数组,如
[ "10.0.0.1 - frank [10/Dec/2000:12:34:56 -0500] \"GET /a.gif HTTP/1.0\" 200 234",
"10.0.0.1 - frank [10/Dec/2000:12:34:57 -0500] \"GET /b.gif HTTP/1.0\" 200 234",
"10.0.0.2 - nancy [10/Dec/2000:12:34:58 -0500] \"GET /c.gif HTTP/1.0\" 200 234",
"10.0.0.2 - nancy [10/Dec/2000:12:34:58 -0500] \"GET /c.gif HTTP/1.0\" 200 234",
"10.0.0.3 - nancy [10/Dec/2000:12:34:58 -0500] \"GET /c.gif HTTP/1.0\" 200 234" ]
我想将这个数组转换为HashMap,所以我的HashMap看起来应该是这样的
"10.0.0.1" : 2
"10.0.0.2" : 2
"10.0.0.3" : 1
为了制作HashMap,我使用Stream API编写了这段代码。
final Map<String, Integer> ipMap = Arrays.stream(lines)
.map(ip -> ip.substring(0, ip.indexOf(" ")))
.collect(Collectors
.toMap(x -> x, x -> 1));
在上面的代码中,我知道我在x -> 1
内使用了.toMap
。因为我不知道该写些什么。
这是我遇到的错误。
线程“main”中的异常java.lang.IllegalStateException:Duplicate 关键1
我正在寻找使用Stream API的答案。