J’ai TreeMap
que je dois convertir en chaîne de type URI, puis revenir à Map. J’ai besoin de définir des délimiteurs personnalisés.
Y a-t-il un outil (goyave, Apache commons?) Qui peut le faire pour moi? Je sais, je peux écrire des boucles simples, mais je cherche un one-liner 🙂
Par exemple
key value key1 val1 key2 val2 key1_val1|key2_val2
Selon David Tulig, vous pouvez le faire en goyave via
Ssortingng ssortingng = Joiner.on("|").withKeyValueSeparator("_").join(map);
Le contraire est également disponible via
Map map = Splitter.on("|").withKeyValueSeparator("_").split(ssortingng);
ce n’est pas une goyave ni des communes apache, et c’est une boucle, mais à part l’instanciation du constructeur de cordes, il s’agit d’une ligne:
for (Entry entry : myMap.entrySet()) { sb.append(entry.getKey() + separator + entry.getValue() + "\n"); }
Utilisation de 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
En Java 8 et supérieur, il existe un autre moyen de ne pas avoir de dépendances externes: utilisez SsortingngJoiner :
List cities = Arrays.asList("Milan", "London", "New York", "San Francisco"); Ssortingng citiesCommaSeparated = Ssortingng.join(",", cities); System.out.println(citiesCommaSeparated); //Output: Milan,London,New York,San Francisco
Les crédits et les exemples vont à cette URL (https://reversecoding.net/java-8-convert-list-ssortingng-comma/)