2016-06-08 15 views
0

Ich habe eine Sammlung, die ich am Anfang eines Programms laden, und ich gebe zu, dass das String-Array, das ich als Wert verwende, immer die gleiche Länge für alle Einträge hat, plus dass es mindestens 1 Wert enthält .
Von diesen Einträgen muss ich die Größe des Arrays, das ich verwendet habe, erhalten. Ab jetzt mache ich es so:Wie erhält man die Größe der Werte in einer Map?

Map<String, String[]> people = new HashTable<>(); 
people.put("miao", new String[]{"bau","cip","muu"}); 
people.values().iterator().next().length; //returns 3 

Gibt es einen besseren Weg, es zu tun?

+0

Das ist gut genug, es sei denn, Sie können diese Länge erhalten, bevor Sie den ersten Array-Wert in der Karte setzen. – Eran

+0

Sollte ich die Frage löschen? Ist es schlecht formatiert oder so? Ich habe schreckliche Schwierigkeiten auf dieser Website, die Abstimmungen zu verstehen ... – Vale

+1

Sie sollten wahrscheinlich eine HashMap anstelle einer Hashtable verwenden (beachten Sie Little-'t '). 'Hashtable' ist synchronisiert. 'HashMap' ist nicht und ist normalerweise, was Sie wollen (um die Kosten der Synchronisation zu vermeiden). Für die meisten Zwecke ist Hashtable eine alte Nachricht. Haben Sie darüber nachgedacht, statt einer 'String []' 'List ' zu verwenden. Auch dies wird normalerweise bevorzugt. Für die meisten Zwecke sollten Sie Arrays als Legacy-Funktion (oder Optimierungsfunktion) von Java betrachten. – Paul

Antwort

0

Nach @Eran (in den Kommentaren) Ich habe bereits beantwortet meine eigene Frage in der Frage, so, die Größe des Wertes zu bekommen (wenn Es ist ein Array) do:

1

Nutzen Sie Guava der ListMultimap:

ListMultimap<String, String> people = ArrayListMultimap.create(); 
people.putAll("miao", new ArrayList("bau","cip","muu"); 

people.get("miao").size();//returns 3 
+0

danke Tom; Ich hätte angeben sollen, dass ich nicht sicher sein kann, was die Schlüssel sein werden. – Vale

Verwandte Themen