Kann mir jemand auf ein Beispiel zeigen, wie man ein Map
in Groovy verwendet, das einen String
als Schlüssel und einen List
als Wert hat?Karte mit Schlüssel als String und Wert als Liste in Groovy
20
A
Antwort
27
Groovy akzeptiert fast alle Java-Syntax, so gibt es ein Spektrum von Möglichkeiten, wie unten dargestellt:
// Java syntax
Map<String,List> map1 = new HashMap<String,List>();
List list1 = new ArrayList();
list1.add("hello");
map1.put("abc", list1);
assert map1.get("abc") == list1;
// slightly less Java-esque
def map2 = new HashMap<String,List>()
def list2 = new ArrayList()
list2.add("hello")
map2.put("abc", list1)
assert map2.get("abc") == list2
// typical Groovy
def map3 = [:]
def list3 = []
list3 << "hello"
map3.'abc'= list1
assert map3.'abc' == list3
13
def map = [:]
map["stringKey"] = [1, 2, 3, 4]
map["anotherKey"] = [55, 66, 77]
assert map["anotherKey"] == [55, 66, 77]
5
Ein zusätzliches kleines Stück, das nützlich ist, wenn sie mit Karten/Liste als Wert zu tun in Eine Karte ist die withDefault(Closure)
Methode auf Karten in groovy. Statt den folgenden Code zu tun:
Map m = [:]
for(object in listOfObjects)
{
if(m.containsKey(object.myKey))
{
m.get(object.myKey).add(object.myValue)
}
else
{
m.put(object.myKey, [object.myValue]
}
}
können Sie wie folgt vorgehen:
Map m = [:].withDefault{key -> return []}
for(object in listOfObjects)
{
List valueList = m.get(object.myKey)
m.put(object.myKey, valueList)
}
Mit Standard kann für andere Dinge auch verwendet werden, aber ich finde dies die häufigste für mich Anwendungsfall.
API: http://www.groovy-lang.org/gdk.html
Karte -> withDefault (Closure)
1
Sie brauchen keine Karte groovy zu erklären intern erkennt es
def personDetails = [firstName:'John', lastName:'Doe', fullName:'John Doe']
// print the values..
println "First Name: ${personDetails.firstName}"
println "Last Name: ${personDetails.lastName}"
Verwandte Themen
- 1. Pattern-Matching-Karte mit String als Schlüssel
- 2. Karte mit Funktionszeiger als Schlüssel in go
- 3. Zugriff Karte Wert in EL mit einer Variablen als Schlüssel
- 4. Liste in der Karte mit indicies als Schlüssel
- 5. Mit Karte enthält als Wert
- 6. Wie man eine Karte als Schlüssel und Wert zerstört
- 7. Revert Schlüssel/Wert-Karte
- 8. Übergabe dynamischer Wert als Schlüssel zu Karte in JSF 2.0
- 9. C++ Liste mit Zeichenfolge als Schlüssel
- 10. Python dict Schlüssel-Liste als Wert Sortiert
- 11. Wie Karte Schlüssel-Wert in eine Liste
- 12. Char * als Schlüssel in einer Karte C++
- 13. Vorverarbeitung txt Dokument in eine Hashmap mit String als Schlüssel, und Integer ArrayList als Wert
- 14. Groovy/Grails Karte als Parameter einer Funktion
- 15. eine ungeordnete Karte mit Tupel als Schlüssel
- 16. Java8 Streams: Karte mit Werten als Liste transponieren
- 17. Wie man durch eine Karte mit Wert als Liste iteriert?
- 18. Groovy: Suchen/geben Sie den Wert einer Karte nach Schlüssel in einer Liste der Karten zurück
- 19. explodieren zwei-item-Liste in Array als Schlüssel => Wert
- 20. Erstellen einer Karte zum Speichern von Strukturkoordinaten als Schlüssel und Zeilennummer als Wert
- 21. C# Liste als Wörterbuch Schlüssel
- 22. String oder String [] in Liste mit Groovy konvertieren
- 23. Infinispan Wert als Liste der Objekte
- 24. Sortieren einer Karte mit einem Schlüssel und einem Paar als Wert?
- 25. java: 'Karte' als Wert in einer anderen Java-Karte verwendet
- 26. Zeichen-Array als Wert in C++ Karte
- 27. Karte mit benutzerdefinierten Schlüssel in Groovy vs Java
- 28. Erstelle assoziatives Array mit Wert als Schlüssel
- 29. Java: Karte mit einer beliebigen Enumeration als Schlüssel
- 30. Erste params als eine Liste von Schlüssel/Wert-Tupel
auch: ' map.stringKey = [1, 2, 3, 4]; map.anotherKey = [55, 66, 77] ' – Will