2011-07-13 33 views
4

我希望有一個代碼,將返回list這樣的:有什麼辦法可以在Groovy中做到這一點?

def list = ["RR","SS"] 
//code to get the output as [R,R,S,S] 

我想出了主意是這樣的:

def Ash = ["RR","as","RTY"] 
def listA = [] 
for(i=0;i<Ash.size();i++) 
{ 
    listA << Ash[i].collect{ it as String } 
} 
AshNew = listA.flatten() 
println AshNew // this prints [R, R, a, s, R, T, Y] which is what i needed.. 

但我仍想知道我們是否能夠做到這一點類似的東西在Groovy中用另一種方式?由於我是Groovy的新手,我想知道更多Groovier解決方案!感謝您的回答!

回答

2

什麼

Ash.join().split("").tail() 
+0

這樣打印出來就像'[,S,R,P,P]'如果列表中的第一個','被省略了,這將會很好! –

+0

解決了這個問題,忘了第一個元素 – marc

+0

謝謝你的好工作!我想我看到你的解決方案後仍然需要更多的修改:D –

4

AshNew = Ash.collect { it as List }.flatten() 

更好嗎?

+0

哦'collect'完成所有元素的迭代工作。忘了那個!:D –

+0

傳播運算符確實收集:Ash * .asType(List).flatten() –

+0

@Bill不確定哪一個在這種情況下更具可讀性 –

2

如何:

Ash.join().findAll() 

的findAll返回一個不爲空,這對於一個加盟字符串是所有這些的每個元素。

+0

+1是一個很好的乾淨選擇。還可以使用'Ash.join()。toList()',它可能在其工作中更加不透明 –

+0

+1,以獲得最清潔和最簡單的方式 –

相關問題