2017-11-15 12 views
1

現在、エレメントに基づいて配列をグループ化するコードで作業しています。私はあなたの知恵で私を助けてくれることを願っています。グループに基づいたグループのグループ

私は、次の配列を与えている:

List<String> list1 = new ArrayList<String>(Arrays.asList("A", "B", "C", "F", "I")); 
List<String> list2 = new ArrayList<String>(Arrays.asList("B", "C", "D", "E", "F")); 
List<String> list3 = new ArrayList<String>(Arrays.asList("J", "K", "B", "L", "F")); 
List<String> list4 = new ArrayList<String>(Arrays.asList("L", "K", "D", "C", "J")); 

今私は、共通の3つの要素を持っているし、新しいリスト/アレイでLISTNAMESことを保存し、これらのリストのどの比較したいです。

commonList1{List2, List3,}  - (B,C,F) 
commonList4{List5}    - (K,J,L) 

は、代わりにすべてのリストを走るのそれを行うための誰よりスマートなアイデアを持っている他に、それぞれを比較し、同じ交差点を持っているどのように多くのリストを検索しますか?

お祈り申し上げます トム

+3

'set'を使って優秀 – notyou

+0

少なくとも単純な' Set'実装はもっと速くなります。したがって、それぞれを独自の集合に集め、次に配列のように集合交差を計算します。利点は、 'Set'は' O(1) '(fast)で' contains 'に答えることができます(少なくとも平均的に)。 – Zabuza

+0

IMHOこれの複製:https://stackoverflow.com/a/36110216/1828296 – lospejos

答えて

1
listA.retainAll(listB); 

LISTAもListBの中に含まれている要素を保持しています。 listAを変更しないようにするには、新しいリストを作成する必要があります。

List<Integer> common = new ArrayList<Integer>(listA); 
common.retainAll(listB); 

上記のコードは、あなたが今リスタとListBの中に含まれているだけの要素が含まれていLISTAまたはListBのと共通の変更から維持することができます。

+0

[here](https://stackoverflow.com/questions/5943330/common-elements-in-two-lists#)からの回答をコピーして貼り付けました。回答-5943349)。また、リンクを使用して情報を適切にコピーしていない。それをコメントにしたり、適切な文書にOPをリンクしてください。 – procrastinator

関連する問題