2017-11-15 4 views
1

Ich arbeite gerade an einem Code, um Arrays basierend auf ihren Elementen zu gruppieren, und ich hoffe, dass du mir mit deiner Weisheit helfen kannst.Gruppen-Arrays basierend auf ihren Elementen

Ich habe gegeben folgende Arrays:

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")); 

Jetzt mag ich, welche diese Listen haben drei Elemente gemeinsam vergleichen und speichern, dass Listennamen in einer neuen Liste/Array.

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

Hat jemand eine intelligentere Idee für das zu tun, statt durch alle Listen laufen, zu vergleichen, die jeweils mit einem anderen und sucht, wie viele Listen die gleiche Kreuzung hat?

Beste Wünsche Tom

+3

Am besten mit einem 'set' – notyou

+0

Zumindest die naive' Set' Implementierung wäre schneller. Daher sammle jedes in seine eigene Menge und berechne dann die gesetzten Schnittpunkte, so wie du es mit Arrays tun würdest. Der Vorteil, 'Set' kann' contains' in 'O (1)' (fast) beantworten (zumindest im Durchschnitt). – Zabuza

+0

IMHO Duplikat davon: https://Stackoverflow.com/a/36110216/1828296 – lospejos

Antwort

1
listA.retainAll(listB); 

listA hält die Elemente, die auch in ListeB enthalten sind. Um die Liste A nicht zu ändern, müssen Sie eine neue Liste erstellen.

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

Der obige Code ermöglicht es Ihnen, von wechselnden listA oder ListeB und gemeinsam jetzt zu halten, enthält nur die Elemente, die in listA und ListeB enthalten sind.

+0

Sie haben die Antwort von [hier] kopiert und eingefügt (https://stackoverflow.com/questions/5943330/common-elements-in-two-lists#) antwort-5943349). Außerdem haben Sie die Informationen nicht korrekt mit Links kopiert. Bitte machen Sie es kommentieren oder verknüpfen Sie das OP mit den richtigen Dokumentationen. – procrastinator

Verwandte Themen