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)
小智 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)
您可以使用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,以保持插入顺序。
好的,这是我的猜测,以防您想要这样的东西(您的问题中没有澄清)。这是在没有 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()
| 归档时间: |
|
| 查看次数: |
21738 次 |
| 最近记录: |