2015-02-23 60 views
1

我有一個groovy列表的列表。一些嵌套列表有一些共同的項目。我想爲所有有共同的至少一個項目加入到一個列表中的嵌套的列表,例如:結合至少有一個項目的列表

[[buy, order, bought, purchase], 
[opinion, point of view], 
[opinion, belief], 
[buy, purchased], 
[buy, order, purchases]] 

(嵌套列表的順序:我的名單列表的

提取物是隨機的)

我想什麼來實現:

[[buy, order, bought, purchase, buy, purchased, buy, order, purchases], 
[opinion, point of view, opinion, belief]] 

任何人對如何實現這一目標有什麼建議? 謝謝!

+3

當然您已嘗試解決該問題? – injecteer 2015-02-23 16:04:29

+0

是的,我有。但是由於我的'解決方案'還沒有起作用,我認爲如果我發表了這些解決方案,它不會對任何人有所幫助。 – zivuska 2015-02-24 10:01:35

回答

3

你可以做inject如下:

def input = [['buy', 'order', 'bought', 'purchase'], 
      ['opinion', 'point of view'], 
      ['opinion', 'belief'], 
      ['buy', 'purchased'], 
      ['buy', 'order', 'purchases']] 

input.inject([]) { list, current -> 
    list.find { it.intersect(current) }?.addAll(current) ?: list << current 
    list 
} 

因此,找到與當前輸入列表相交的輸出列表中的一個元素,如果存在將其添加到輸出列表。

如果找不到一個,請將輸入列表添加到輸出列表

+0

謝謝!這有助於:) – zivuska 2015-02-24 10:26:39

+0

@zivuska酷!如果它回答你的問題,你能接受它作爲答案嗎? – 2015-02-24 10:28:18

相關問題