Java映射值到逗号分隔的字符串

l a*_*a s 10 java csv map guava string-utils

有没有一种有效的方法可以使用guava或StringUtils将Java映射值转换为逗号分隔的字符串?

Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");
Run Code Online (Sandbox Code Playgroud)

寻找将testMap转换为String的方法 - >"val1,val2".

lre*_*der 19

以下是在Java 8中执行此操作的方法(不需要Guava,StringUtils或其他外部库):

testMap.values().stream().map(Object::toString).collect(Collectors.joining(","));
Run Code Online (Sandbox Code Playgroud)

  • 在 Java 8 中,只需使用 `String.join(",", testMap.values())`,就像 [Syam 的回答](/sf/answers/2801042751/) 中那样。 (3认同)

Lou*_*man 9

番石榴:Joiner.on(',').join(map.values()).


小智 9

在 Java 1.8 中,一个join()方法被添加到可以执行此操作的 String 类中。

Map具有values()获取所有值的功能。map.values() 是字符串类型,因此只需传递给 String.join。例子:

Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");

String valueString = String.join(",",map.values()); //val1,val2
Run Code Online (Sandbox Code Playgroud)


sss*_*fff 5

您可以使用StringUtils

final Map<String, String> testMap = new LinkedHashMap<String, String>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");

String csv = StringUtils.join(testMap.values(), ',')); // "val1,val2"
Run Code Online (Sandbox Code Playgroud)

请注意,我将 the 更改HashMap为 a LinkedHashMap,以保持插入顺序。


eve*_*ton 2

好的,这是我的猜测,以防您想要这样的东西(您的问题中没有澄清)。这是在没有 Guava 或 StringUtils 的情况下完成的:

Map<Integer, Integer> map = new HashMap<Integer, Integer>();

map.put(1, 2);
map.put(3, 4);

System.out.println(map.toString());
Run Code Online (Sandbox Code Playgroud)

输出:

{1=2, 3=4}
Run Code Online (Sandbox Code Playgroud)

如果您想将显示values为逗号分隔列表,您可以使用以下命令:

System.out.println(map.values().toString());
Run Code Online (Sandbox Code Playgroud)

输出:

[2, 4]
Run Code Online (Sandbox Code Playgroud)

PS:如果需要,请删除[]s.replaceAll()