2017-03-06 55 views
3

什么是的Java 8最好的方法,从的Java 8 - 映射为逗号分隔括号对

Map<Integer, Integer> 

得到像一个字符串:

[k1,v1],[k2,v2],[k3,v3]... 

我在看什么像这样,但我不知道如何“返回”或“映射”StringBuilder

map.forEach((k,v) -> s.append("[").append(k).append(",").append(v).append("]")) 
        .collect(Collectors.joining(", ")); 

无论如何,我认为StringBuilder不适合未来平等主义的多线程。

请注意,我可以迭代Map并以旧的方式创建所有结构,但我想看看如何使用一些新的Java8功能来完成。

我认为一些偶然的toString()已经将方括号中的地图值返回,这可能很方便,但依靠这个方法并不是一个好主意。

回答

6
map.entrySet() 
    .stream() 
    .map(e -> "[" + e.getKey() + "," + e.getValue() + "]") 
    .collect(Collectors.joining(",")); 
+0

entrySet!谢谢。顺便说一句,我不能编辑,但最后还是有'';'丢失 – user1156544