2013-11-27 24 views
0

是否有可能對多維字符串數組中的第一個元素執行groupBy()String [] [] - 是groupBy()可能嗎?

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

每個工程..

serversAndQueues.each{r-> 
    println r[0] 
} 

輸出

server1 
server1 
server2 

什麼GROUPBY()?

serversAndQueues.groupBy({ it[0]}).each{r-> 
    println r[0] 
} 

..它拋出一個exeption

輸出

groovy.lang.MissingMethodException: No signature of method: [[Ljava.lang.String;.groupBy() is applicable for argument types: (ConsoleScript12$_run_closure2) values: [[email protected]] 
Possible solutions: grep(), grep(), drop(int), countBy(groovy.lang.Closure), grep(java.lang.Object), grep(java.lang.Object)... 

回答

1

是的,它 - 至少它使用Groovy 2.2.x並:

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

serversAndQueues.groupBy { it[ 0 ] }.each { key, value -> 
    println "$key => $value" 
} 

打印:

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

我目前使用的是版本2.1.3。 ...將升級並再試一次... – user955732

+0

是的,它在版本2.2.1中工作:)謝謝! – user955732

相關問題