Dividir la cadena en pares clave-valor

Tengo una cadena como esta:

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

Ahora: indica pares clave-valor mientras:: Separa las parejas. Quiero agregar los pares clave-valor a un mapa.

Puedo lograr esto usando:

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));
}

¿Pero hay una manera eficiente de hacer esto?

Siento que el código es ineficiente porque he usado 2String[] objetos y llamado elsplit funcionan dos veces. Además, estoy usandot[0] yt[1] que podría arrojar unArrayIndexOutOfBoundsException si no hay valores

Respuestas a la pregunta(5)

Su respuesta a la pregunta