2012-09-02 13 views

Respuesta

27

maravilloso acepta casi toda la sintaxis de Java, por lo que hay un espectro de opciones, como se ilustra a continuación:

// 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

también: ' map.stringKey = [1, 2, 3, 4]; map.anotherKey = [55, 66, 77] ' – Will

5

Una pequeña pieza adicional que es muy útil cuando se trata de mapas/lista como el valor en un mapa es el método withDefault(Closure) en mapas en groovy. En vez de hacer el siguiente código:

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] 
    } 
} 

Usted puede hacer lo siguiente:

Map m = [:].withDefault{key -> return []} 
for(object in listOfObjects) 
{ 
    List valueList = m.get(object.myKey) 
    m.put(object.myKey, valueList) 
} 

Con predeterminado puede ser utilizado para otras cosas también, pero me parece que este caso de uso más común para mí.

API: http://www.groovy-lang.org/gdk.html

Mapa -> withDefault (Cierre)

1

que no es necesario declarar Mapa maravilloso reconoce internamente

def personDetails = [firstName:'John', lastName:'Doe', fullName:'John Doe'] 

// print the values.. 
    println "First Name: ${personDetails.firstName}" 
    println "Last Name: ${personDetails.lastName}" 

http://grails.asia/groovy-map-tutorial

Cuestiones relacionadas