Gemeinsame Elemente in zwei Listen

Ich habe zwei ArrayLists mit 3 Integer. Ich möchte einen Weg finden, die gemeinsamen Elemente der beiden Listen zurückzugeben. Hat Anynody Idee, wie kann ich das erreichen?

Verwenden Sie Collection#retainAll() .

 listA.retainAll(listB); // listA now contains only the elements which are also contained in listB. 

Wenn Sie vermeiden möchten, dass Änderungen in listA betroffen listA , müssen Sie eine neue erstellen.

 List common = new ArrayList(listA); common.retainAll(listB); // common now contains only the elements which are contained in listA and listB. 

Sie können Überschneidungsoperationen mit Ihren ArrayList Objekten festlegen.

Etwas wie das:

 List l1 = new ArrayList(); l1.add(1); l1.add(2); l1.add(3); List l2= new ArrayList(); l2.add(4); l2.add(2); l2.add(3); System.out.println("l1 == "+l1); System.out.println("l2 == "+l2); List l3 = new ArrayList(l2); l3.retainAll(l1); System.out.println("l3 == "+l3); System.out.println("l2 == "+l2); 

Nun sollte l3 nur gemeinsame Elemente zwischen l1 und l2 .

 CONSOLE OUTPUT l1 == [1, 2, 3] l2 == [4, 2, 3] l3 == [2, 3] l2 == [4, 2, 3] 

Warum erfinden Sie das Rad neu? Verwenden Sie Commons-Sammlungen :

 CollectionUtils.intersection(java.util.Collection a, java.util.Collection b) 

Verwenden der Stream.filter() Methode von Java 8 in Kombination mit List.contains() :

 import static java.util.Arrays.asList; import static java.util.stream.Collectors.toList; /* ... */ List list1 = asList(1, 2, 3, 4, 5); List list2 = asList(1, 3, 5, 7, 9); List common = list1.stream().filter(list2::contains).collect(toList()); 

Bildbeschreibung hier eingeben

  List lista =new ArrayList(); List listb =new ArrayList(); lista.add("Isabella"); lista.add("Angelina"); lista.add("Pille"); lista.add("Hazem"); listb.add("Isabella"); listb.add("Angelina"); listb.add("Bianca"); // Create an aplusb list which will contain both list (list1 and list2) in which common element will occur twice List listapluslistb =new ArrayList(lista); listapluslistb.addAll(listb); // Create an aunionb set which will contain both list (list1 and list2) in which common element will occur once Set listaunionlistb =new HashSet(lista); listaunionlistb.addAll(listb); for(String s:listaunionlistb) { listapluslistb.remove(s); } System.out.println(listapluslistb); 

Falls du es selbst machen willst ..

 List commons = new ArrayList(); for (Integer igr : group1) { if (group2.contains(igr)) { commons.add(igr); } } System.out.println("Common elements are :: -"); for (Integer igr : commons) { System.out.println(" "+igr); } 
  // Create two collections: LinkedList listA = new LinkedList(); ArrayList listB = new ArrayList(); // Add some elements to listA: listA.add("A"); listA.add("B"); listA.add("C"); listA.add("D"); // Add some elements to listB: listB.add("A"); listB.add("B"); listB.add("C"); // use List common = new ArrayList(listA); // use common.retainAll common.retainAll(listB); System.out.println("The common collection is : " + common); 

Sie können die gemeinsamen Elemente zwischen zwei Listen mit der Methode “retainAll” abrufen. Diese Methode entfernt alle nicht übereinstimmenden Elemente aus der Liste, auf die sie angewendet wird.

 Ex.: list.retainAll(list1); 

In diesem Fall werden alle Elemente, die nicht in Liste1 enthalten sind, aus der Liste entfernt, und nur diejenigen bleiben übrig, die zwischen Liste und Liste1 gemeinsam sind.

 List list = new ArrayList<>(); list.add(10); list.add(13); list.add(12); list.add(11); List list1 = new ArrayList<>(); list1.add(10); list1.add(113); list1.add(112); list1.add(111); //before retainAll System.out.println(list); System.out.println(list1); //applying retainAll on list list.retainAll(list1); //After retainAll System.out.println("list::"+list); System.out.println("list1::"+list1); 

Ausgabe:

 [10, 13, 12, 11] [10, 113, 112, 111] list::[10] list1::[10, 113, 112, 111] 

HINWEIS: Nachdem in der Liste retainAll angewendet wurde, enthält die Liste ein gemeinsames Element zwischen list und list1.