Java Sammenlign to lister

Listegrensesnittet i Java gir metoder for å kunne sammenligne to lister og finne vanlige og manglende elementer fra listene.



Sammenlign to usorterte lister for likestilling

Hvis du vil kontrollere at to lister er like, dvs. inneholder de samme elementene og vises i samme indeks, kan vi bruke:

import java.util.Arrays; import java.util.List; public class CompareTwoLists {
public static void main(String[] args) {
List listOne = Arrays.asList('a', 'b', 'c');
List listTwo = Arrays.asList('a', 'b', 'c');
List listThree = Arrays.asList('c', 'a', 'b');

boolean isEqual = listOne.equals(listTwo);
System.out.println(isEqual);

isEqual = listOne.equals(listThree);
System.out.println(isEqual);
} }

Produksjon:


true false

Som du kan se equals() metoden sammenligner elementene og deres plassering i listen.

I slekt:




Sammenlign to sorterte lister

Inneholder to lister de samme elementene?

For å sammenligne to lister for likhet bare når det gjelder varer uavhengig av plassering, må vi bruke sort() metode fra Collections() klasse.

For eksempel:

import java.util.Arrays; import java.util.Collections; import java.util.List; public class CompareTwoLists {
public static void main(String[] args) {
List listOne = Arrays.asList('b', 'c', 'a');
List listTwo = Arrays.asList('a', 'c', 'b');
List listThree = Arrays.asList('c', 'a', 'b');

Collections.sort(listOne);
Collections.sort(listTwo);
Collections.sort(listThree);

boolean isEqual = listOne.equals(listTwo);
System.out.println(isEqual);

isEqual = listOne.equals(listThree);
System.out.println(isEqual);
} }

Produksjon:


true true

Sammenlign to lister, finn forskjeller

List grensesnittet gir også metoder for å finne forskjeller mellom to lister.

removeAll() metoden sammenligner to lister og fjerner alle de vanlige elementene. Det som er igjen er de ekstra eller manglende varene.

For eksempel når vi sammenligner to lister, listOne og listTwo og vi vil finne ut hvilke gjenstander som mangler fra listTwo vi bruker:

import java.util.ArrayList; import java.util.Arrays; public class CompareTwoArrayLists {
public static void main(String[] args) {
ArrayList listOne = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

ArrayList listTwo = new ArrayList(Arrays.asList(1, 2, 4, 5, 6, 7));

listOne.removeAll(listTwo);

System.out.println('Missing items from listTwo ' + listOne);
} }

Produksjon:


Missing items from listTwo [3]

På samme måte, hvis vi brukte:

listTwo.removeAll(listOne); System.out.println('Missing items from listOne ' + listTwo);

Vi ville fått:

Missing items from listOne [6, 7]

Sammenlign to lister, finn vanlige ting

retainAll() metoden holder bare elementene som er vanlige i begge lister. For eksempel:

public class CompareTwoArrayLists {
public static void main(String[] args) {
ArrayList listOne = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

ArrayList listTwo = new ArrayList(Arrays.asList(1, 2, 4, 5, 6, 7));

listOne.retainAll(listTwo);

System.out.println('Common items in both lists ' + listOne);
} }

Produksjon:


Common items in both lists [1, 2, 4, 5]