J'ai une chaîne qui vient en format particulier, donc je veux analyser cette chaîne dans la carte. J'ai une méthode ci-dessous qui analyse String à une carte et cela fonctionne bien.Parser une chaîne formatée dans une carte qui a la même clé plusieurs fois?
public static Map<String, String> parseStringToMap(String payload) {
try {
return Maps.newHashMap(Splitter.on("|").withKeyValueSeparator("=").split(payload));
} catch (Exception ex) {
return ImmutableMap.of();
}
}
exemple de l'échantillon d'une chaîne:
"type=3|Id=23456|user=13456"
Maintenant, parfois, quand j'ai même clé deux fois avec la même valeur dans la même chaîne payload
, alors ma méthode ci-dessus échoue et il émet une exception. Par exemple pour la chaîne ci-dessous, cela ne fonctionne pas et échoue, puis retourne la carte vide car elle a deux fois la touche type
. Que puis-je faire pour résoudre ce problème au lieu de réparer la charge utile de la chaîne?
"type=3|Id=23456|user=13456|type=3"
Alors disons que si la même touche vient plusieurs fois, remplacez cette valeur de clé dans la carte au lieu d'échouer. Et je veux retourner une carte Mutable.
Je travaille toujours avec Java 7. Quelle est la meilleure et efficace façon de le faire?
Êtes-vous capable d'utiliser Java 8? Si tel est le cas, vous pouvez utiliser un collecteur de regroupement pour créer une
@AndyTurner Malheureusement, je suis toujours sur Java 7 et je ne peux pas encore utiliser Java 8. – user1950349