2013-11-28 2 views
0

У меня возник вопрос, почему использование массива в массиве строк не работает.собрать можно def queues = [] as String []?

Это работает нормально

String[][] serversAndQueues = [["server1","queue"],["server1","queue1"],["server2","queue2"]] 

serversAndQueues.groupBy { it[ 0 ] }.each { server, value -> 
    def queues = [] 
    value.collect(queues){ 
     it[1] 
    } 
    println "$server => $queues" 
} 

OUTPUT

server1 => [queue, queue1] 
server2 => [queue2] 

но если я пытаюсь определить очереди в виде массива строк очереди DEF = [], как String [], исключение составляет

String[][] serversAndQueues = [["server1","queue"],["server1","queue1"],["server2","queue2"]] 

serversAndQueues.groupBy { it[ 0 ] }.each { server, value -> 
    def queues = [] as String[] 
    value.collect(queues){ 
     it[1] 
    } 
    println "$server => $queues" 
} 

ВЫВОД

Exception thrown 

    groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.collect() is applicable for argument types: ([Ljava.lang.String;, ConsoleScript40$_run_closure2_closure3) values: [[], [email protected]] 
    Possible solutions: collect(), collect(), collect(groovy.lang.Closure), collect(java.util.Collection, groovy.lang.Closure), collect(java.util.Collection, groovy.lang.Closure), collect(groovy.lang.Closure) 

     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:55) 

     at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:46) 
    .. 
    ... 
+0

был входящий в комплект поставки ответа какой-либо помощи? –

ответ

1

Вы не можете собрать в массив, только коллекция

Вы можете попробовать

def queues = value.collect { it[ 1 ] } as String[]