将java Map转换为自定义键=值字符串
我有TreeMap
,我需要将其转换为类似URI的字符串然后再转换为Map。 我需要设置自定义分隔符。
是否可以为我做任何工具(番石榴,Apache公共?)? 我知道,我可以写简单的循环,但我正在寻找单行:)
例如
key value key1 val1 key2 val2 key1_val1|key2_val2
据David Tulig说,你可以用番石榴来做
String string = Joiner.on("|").withKeyValueSeparator("_").join(map);
相反的也可以通过
Map map = Splitter.on("|").withKeyValueSeparator("_").split(string);
它不是番石榴或apache公共,它是一个循环,但除了实例化字符串生成器,它是一个单行:
for (Entry entry : myMap.entrySet()) { sb.append(entry.getKey() + separator + entry.getValue() + "\n"); }
使用Java8:
private static Map prepareMap() { Map map = new LinkedHashMap<>(); map.put("key1", "val1"); map.put("key2", "val2"); return map; } @Test public void toStr() { assertEquals("key1_val1|key2_val2", prepareMap().entrySet().stream() .map(e -> e.getKey() + "_" + e.getValue()) .collect(Collectors.joining("|"))); } @Test public void toStrFunction() { assertEquals("key1_val1|key2_val2", joiner("|", "_").apply(prepareMap())); } private static Function
在java 8及更高版本中,还有另一种没有外部依赖关系的方法:使用StringJoiner :
List cities = Arrays.asList("Milan", "London", "New York", "San Francisco"); String citiesCommaSeparated = String.join(",", cities); System.out.println(citiesCommaSeparated); //Output: Milan,London,New York,San Francisco
积分和示例转到此URL(https://reversecoding.net/java-8-convert-list-string-comma/)