Séparer la chaîne en paires clé-valeur

J'ai une chaîne comme celle-ci:

pet:cat::car:honda::location:Japan::food:sushi

Maintenant : indique les paires clé-valeur, tandis que :: sépare les paires.
Je tiens à ajouter les paires clé-valeur d'une carte.

Je peux réaliser cela à l'aide de:

Map<String, String> map = new HashMap<String, String>();
String test = "pet:cat::car:honda::location:Japan::food:sushi";
String[] test1 = test.split("::");

for (String s : test1) {
    String[] t = s.split(":");
    map.put(t[0], t[1]);
}

for (String s : map.keySet()) {
    System.out.println(s + " is " + map.get(s));
}

Mais est-il un moyen efficace de faire cela?


Je ressens le code est inefficace, parce que je l'ai utilisé 2 String[] des objets et a appelé le split fonction deux fois.
Aussi, je suis en utilisant t[0] et t[1] qui pourrait jeter un ArrayIndexOutOfBoundsException si il n'y a pas de valeurs.

source d'informationauteur v1shnu