Listegrensesnittet i Java gir metoder for å kunne sammenligne to lister og finne vanlige og manglende elementer fra listene.
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:
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
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]
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]