是否有使用guava或StringUtils将Java映射值转换为逗号分隔字符串的有效方法?
Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");
寻找将testMap转换为String的方法 - &gt; “VAL1,VAL2”。
答案 0 :(得分:14)
这里是如何在Java 8中完成的(不需要Guava,StringUtils或其他外部库):
testMap.values().stream().map(Object::toString).collect(Collectors.joining(","));
答案 1 :(得分:9)
番石榴:Joiner.on(',').join(map.values())
。
答案 2 :(得分:2)
好的,这是我的猜测,以防你想要这样的事情(你的问题没有澄清)。这是在没有Guava或StringUtils的情况下完成的:
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
map.put(1, 2);
map.put(3, 4);
System.out.println(map.toString());
输出:
{1=2, 3=4}
如果要将values
显示为以逗号分隔的列表,可以使用以下命令:
System.out.println(map.values().toString());
输出:
[2, 4]
PS:如果需要,请删除[]
.replaceAll()
答案 3 :(得分:2)
您可以使用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"
注意我已将HashMap
更改为LinkedHashMap
,以便保留广告订单。
答案 4 :(得分:1)
您可以在Eclipse Collections中使用makeString()
。
MutableMap<String, String> testMap = new UnifiedMap<String, String>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");
String commaAndSpace = testMap.makeString();
Assert.assertTrue(commaAndSpace.equals("val1, val2")
|| commaAndSpace.equals("val2, val1"));
String comma = testMap.makeString(",");
Assert.assertTrue(comma.equals("val1,val2")
|| comma.equals("val2,val1"));
如果您无法将Map
转换为Eclipse集合类型,则可以使用MapAdapter
。
MapAdapter.adapt(testMap).makeString();
注意:我是Eclipse集合的提交者。
答案 5 :(得分:0)
如果您使用的是Spring MVC,那么这可能适合您。
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());
输出:abc,def,ghi
答案 6 :(得分:0)
Map
有一个函数values()
来获取所有值。 map.values()是字符串类型,因此传递给字符串joiner。例如:
Map<String, String> testMap = new HashMap<>();
testMap.put("key1", "val1");
testMap.put("key2", "val2");
String valueString = String.join(",",map.values()); //val1,val2