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

Java将值映射到逗号分隔的字符串,java,csv,map,guava,string-utils,Java,Csv,Map,Guava,String Utils,有没有一种有效的方法可以使用guava或StringUtils将java映射值转换为逗号分隔的字符串 Map<String, String> testMap = new HashMap<>(); testMap.put("key1", "val1"); testMap.put("key2", "val2"); Map testMap=newhashmap(); testMap.put(“key1”、“val1”); testMap.put(“key2”、“val2”);

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

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

正在寻找一种将testMap转换为字符串->“val1,val2”的方法。

好的,如果您想要这样的东西,我猜一下(您的问题中没有说明)。这是在没有番石榴或串果酱的情况下完成的:

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

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

System.out.println(map.toString());
如果要将
显示为逗号分隔的列表,可以使用以下命令:

System.out.println(map.values().toString());
输出:

{1=2, 3=4}
[2, 4]

PS:使用
.replaceAll()
删除
[]
如果需要,可以使用
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"
final-Map testMap=new-LinkedHashMap();
testMap.put(“key1”、“val1”);
testMap.put(“key2”、“val2”);
String csv=StringUtils.join(testMap.values(),',');//瓦尔1,瓦尔2

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

Guava:
Joiner.on(',).join(map.values())
您可以在中使用
makeString()


注意:我是Eclipse集合的提交者。

以下是如何在Java 8+中实现这一点(不需要Guava、StringUtils或其他外部库):


如果您使用的是SpringMVC,那么这可能适合您

import org.springframework.util.StringUtils;

Map<String, String> groups = //List of Maps
List<String> targetList = new ArrayList<String>(groups).values());
String csv = StringUtils.arrayToCommaDelimitedString(targetList.toArray());
import org.springframework.util.StringUtils;
映射组=//映射列表
List targetList=new ArrayList(groups.values());
字符串csv=StringUtils.arrayToCommaDelimitedString(targetList.toArray());
输出:abc、def、ghi

在Java1.8中,向String类添加了一个方法来实现这一点

另外,
Map
还有一个函数
values()
用于获取所有值。value()是字符串类型,因此只需传递给string.join即可。例如:

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

String valueString = String.join(",",map.values()); //val1,val2
Map testMap=newhashmap();
testMap.put(“key1”、“val1”);
testMap.put(“key2”、“val2”);
String valueString=String.join(“,”,map.values())//瓦尔1,瓦尔2

你的意思是像
“map:+map
是什么意思?你说的“逗号分隔字符串”是什么意思?你能为你的输入和输出添加示例吗?这只是供人阅读,还是让你以后可以通过一些软件读回?如果后者,考虑如果其中一个值中有逗号,会发生什么。您可能希望使用已建立的序列化格式,如JSON。我们是否回答了您的问题?如果是这样,请选择一个答案并将其标记为已接受。或者只选择值:
System.out.println(map.values())或只是键!:-)<代码>System.out.println(map.keySet())方法是可用的String.join可以从Java 8中的JDK 1.8获得,只需使用
String.join(“,”,testMap.values())
就像中一样。是的,这更干净。每个人都应该投西亚姆的票answer@DonaldRaab,如果MutableMap#makeString的方法名类似于
makeKeyString
表示字符串值的键,以及
makeValueString
表示字符串值的值,我会非常高兴。方法名
makeString
并不是一个自我描述的伟大观察。如果您有兴趣参与,这些可能是对图书馆的潜在贡献。映射上的方法
makeString
实际上继承自
RichIterable
。在Eclipse集合中,
MutableMap
扩展了
RichIterable
testMap.values().stream().map(Object::toString).collect(Collectors.joining(","));
import org.springframework.util.StringUtils;

Map<String, String> groups = //List of Maps
List<String> targetList = new ArrayList<String>(groups).values());
String csv = StringUtils.arrayToCommaDelimitedString(targetList.toArray());
Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");

String valueString = String.join(",",map.values()); //val1,val2