Java 中比較兩個 ArrayList


如何在 Java 中比較兩個 ArrayList?

在 Java 環境中,有多種方法可用於比較兩個特定的 陣列列表。它包含陣列列表,因為它們的大小相同,並且應該包含這些特定列表中的相同元素。

在 Java 中比較兩個 ArrayList 的不同方法

下面列出了一些方法:

  • Java equals() 方法

  • Java removeAll() 方法

  • Java retainAll() 方法

  • Java ArrayList.contains() 方法

  • Java contentEquals() 方法

  • java.util.ArrayList 方法

對於此過程:

  • 此特定函式具有一個要比較相等性的引數值。

  • 如果陣列列表相等,則此過程將返回一個 true 彈出視窗。

示例

以下是一個示例:

Input For The Operation:
ArrayList One = [1, 2, 3, 4],
ArrayList Two = [1, 2, 3, 4]
Output Is Here: Both Array Lists are equal Here
Input For The Operation :
ArrayList One = [1, 2, 3, 4],
ArrayList Two = [4, 2, 3, 1]
Output Is Here: Both Array List are not equal Here

比較兩個陣列列表的演算法

在此可能的演算法中,我們將向您展示如何使用 Java 環境中提供的各種方法來執行比較兩個陣列列表的過程。

  • 步驟 1 - 開始該過程。

  • 步驟 2 - 匯入並宣告 Java 包以執行該方法。

  • 步驟 3 - 宣告一個公共類。

  • 步驟 4 - 提及字串引數。

  • 步驟 5 - 建立並宣告兩個陣列列表。

  • 步驟 6 - 填充陣列列表一。

  • 步驟 7 - 填充陣列列表二。

  • 步驟 8 - 顯示兩個陣列列表。

  • 步驟 9 - 比較兩個陣列列表。

  • 步驟 10 - 如果評估結果為真,則列印相等訊息。

  • 步驟 11 - 如果評估結果為假,則阻止執行過程並列印不相等文字。

  • 步驟 12 - 在陣列列表一中插入另一個元素。

  • 步驟 13 - 顯示兩個陣列列表。

  • 步驟 14 - 再次比較兩個陣列列表。

  • 步驟 15 - 獲取結果。

  • 步驟 16 - 終止該過程。

比較兩個陣列列表的語法

ArrayList<String> list1 = new ArrayList<String>();
list1.add("A");
list1.add("B");
list1.add("C");
list1.add("D");
ArrayList<String> list2 = new ArrayList<String>();
list2.add("E");
list2.add("F");
list2.add("G");
list2.add("H");
System.out.println(list2);
System.out.println(list1.equals(list2));
public class CompareTwoLists {
	List<String> listOne = Arrays.asList("b", "c", "a");
	List<String> listTwo = Arrays.asList("a", "c", "b");
	List<String> 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);
}
List<String> listOfAdditionalItems = listOne.stream()
.filter(item -> !listTwo.contains(item))
.toList();
Assertions.assertTrue(CollectionUtils.isEqualCollection(List.of("c", "d"),
listOfAdditionalItems));
List<String> listOfMissingItems = listTwo.stream()
.filter(item -> !listOne.contains(item))
.toList();
Assertions.assertTrue(CollectionUtils.isEqualCollection(List.of("e", "f"),
listOfMissingItems));

在此可能的語法中,我們嘗試向您展示如何宣告和建立比較類,以及如何透過使用此方法比較兩個特定陣列來獲得可能的結果。透過遵循這些特定的語法,我們將朝著解決問題陳述的一些可能方法邁進。

遵循的方法

  • 方法 1 - 使用不同的外掛引數比較兩個 ArrayList 元素的 Java 程式

  • 方法 2 - 使用具有單個引數的 java.util.ArrayList 比較兩個陣列列表的 Java 程式

方法 1:使用不同的外掛引數比較兩個 ArrayList 元素

equals() 方法的使用

在此可能的方法中,我們將應用 equals() 方法作為最少介面。它可以比較特定的物件以獲取與特定列表相等的值。如果我們可以在列表中找到該特定物件,則此方法返回 true 值。否則,它返回 false 值。

public class CompareTwoArrayLists {
	ArrayList<Integer> listOne = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
	ArrayList<Integer> listTwo = new ArrayList<>(Arrays.asList(1, 2, 4, 5, 6, 7));
	listOne.compareAll(listTwo);
}

示例

//Java program to compare the both list by using the equals() method
import java.util.*;
public class ARBRDDequalmethods{
   public static void main(String args[]){
      ArrayList<String> firstList=new ArrayList<String>();
      firstList.add("LADAKH");
      firstList.add("PAHALGHAM");
      firstList.add("KARGIL");
      firstList.add("GULMARG");
      System.out.println(firstList);
      List<String> secondList=new ArrayList<String>();
      secondList.add("Sonamarg");
      secondList.add("Kolkata");
      secondList.add("Dhaka");
      secondList.add("Mango");
      System.out.println(secondList);
      boolean boolval = firstList.equals(secondList);
      System.out.println(boolval);
      secondList.add("Papaya");
      boolean bool = firstList.equals(secondList);
      System.out.println(bool);
   }
}

輸出

[LADAKH, PAHALGHAM, KARGIL, GULMARG]
[Sonamarg, Kolkata, Dhaka, Mango]
false
false

removeAll() 方法的使用

在此可能的方法中,我們將對特定陣列列表應用 removeAll() 方法以刪除該特定列表中的所有元素。該方法覆蓋 AbstractCollection<E> 的方法。如果該過程返回 true 符號,則列表將作為呼叫值的輸出而更改。

示例

//Java program to compare the both list by using the removeAll() method
import java.util.*;
public class ARBRDD{
   public static void main(String args[]){
      ArrayList<String> firstList=new ArrayList<String>();
      firstList.add("KOLKATA");
      firstList.add("DHAKA");
      firstList.add("INDIA");
      firstList.add("BANGLADESH");
      ArrayList<String> secondList=new ArrayList<String>();
      secondList.add("CHICKEN");
      secondList.add("BEEF");
      secondList.add("PORK");
      secondList.add("MUTTON");
      secondList.removeAll(firstList);
      System.out.println(secondList);
   }
}

輸出

[CHICKEN, BEEF, PORK, MUTTON]

retainAll() 方法的使用

在此可能的方法中,我們將應用 retainAll() 方法。此方法僅保留也作為公共值存在於另一個列表中的列表的元素。此過程還覆蓋 AbstarctCollection<E> 類的值。

示例

//Java program to compare the both list by using the retainAll() method
import java.util.*;
public class ARBRDD{
   public static void main(String args[]){
      ArrayList<Integer> firstList=new ArrayList<Integer>(Arrays.asList(12, 4, 67, 90, 34));
      System.out.println("First array list is here: ");
      System.out.println(firstList);
      List<Integer> secondList=new ArrayList<Integer>(Arrays.asList(12, 4, 67, 0, 34));
      System.out.println("Second array list is here: ");
      System.out.println(secondList);
      firstList.removeAll(secondList);
      System.out.println("Un-common element of the first list: ");
      System.out.println(firstList);
   }
}

輸出

First array list is here:
[12, 4, 67, 90, 34]
Second array list is here:
[12, 4, 67, 0, 34]
Un-common element of the first list:
[90]

ArrayList.contains() 方法的使用

在此可能的方法中,我們將應用 ArrayList.Contains() 方法,該方法比較兩個不同陣列列表中存在的元素。如果操作匹配的值,我們將獲得 true 值,否則整個方法將返回 false。

示例

//Java program to compare the both list by using the ArrayList.contains() method
import java.util.*;
public class ARBRDD{
   public static void main(String args[]){
      ArrayList<String> firstList=new ArrayList<String>(Arrays.asList("A", "B", "O", "N", "I"));
      System.out.println("First array list is here: ");
      System.out.println(firstList);
      List<String> secondList=new ArrayList<String>(Arrays.asList("R", "U", "D", "R", "A"));
      System.out.println("Second array list is here: ");
      System.out.println(secondList);
      secondList.retainAll(firstList);
      System.out.println("Common elements in both list: ");
      System.out.println(secondList);
   }
}

輸出

First array list is here:
[A, B, O, N, I]
Second array list is here:
[R, U, D, R, A]
Common elements in both list:
[A]

contentEquals() 方法的使用

在此可能的方法中,我們將應用 contentEquals() 方法。它將字串類與緩衝區類進行比較。返回屬於該特定字串類的布林值。

示例

//Java program to compare the both list by using the ArrayList.contains() method
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ARBRDD{
   public static boolean compareList(ArrayList ls1, ArrayList ls2){
      return ls1.toString().contentEquals(ls2.toString())?true:false;
   }
   public static void main(String[] args){
      ArrayList<String> firstList = new ArrayList<String>(Arrays.asList("Java", "Python", "Ruby", "Go"));
      ArrayList<String> secondList = new ArrayList<String>(Arrays.asList("Java", "Python", "Ruby", "Go"));
      System.out.println("When Lists are same the same here: "+compareList(firstList, secondList));
      secondList.add("C++");
      System.out.println("When Lists are not same here in this process: "+compareList(firstList, secondList));
   }
}

輸出

When Lists are same the same here: true
When Lists are not same here in this process: false

方法 2:使用單個引數比較兩個陣列列表

java.util.ArrayList 方法的使用

在此可能的方法中,我們將應用 java.util.ArrayList 方法。這主要用於比較兩個陣列列表。兩個陣列列表的大小和元素數量在這些列表中都應該相等。此過程的時間複雜度為 O(N)。

boolean equals(Object o)

示例

//Java program to compare the two array lists by using java.util.ArrayList which has a single parameter
import java.util.ArrayList;
public class ARBRDD{
   public static void main(String[] args){
      ArrayList<String> ArrayList1
      = new ArrayList<String>();
      ArrayList<String> ArrayList2
      = new ArrayList<String>();
      ArrayList1.add("item 1");
      ArrayList1.add("item 2");
      ArrayList1.add("item 3");
      ArrayList1.add("item 4");
      ArrayList2.add("item 1");
      ArrayList2.add("item 2");
      ArrayList2.add("item 3");
      ArrayList2.add("item 4");
      System.out.println(" ArrayList1 = " + ArrayList2);
      System.out.println(" ArrayList1 = " + ArrayList1);
      if (ArrayList1.equals(ArrayList2) == true) {
         System.out.println(" Array List are equal");
      }
      else{
         System.out.println(" Array List are not equal");
      }
      System.out.println(
      "\n Lets insert one more item in Array List 1");
      ArrayList1.add("item 5");
      System.out.println(" ArrayList1 = " + ArrayList1);
      System.out.println(" ArrayList = " + ArrayList2);
      if (ArrayList1.equals(ArrayList2) == true) {
         System.out.println(" Array List are equal");
      }
      else {
         System.out.println(" Array List are not equal");
      }
   }
}

輸出

ArrayList1 = [item 1, item 2, item 3, item 4]
ArrayList1 = [item 1, item 2, item 3, item 4]
Array List are equal here
Lets insert one more item in Array List 1
ArrayList1 = [item 1, item 2, item 3, item 4, item 5]
ArrayList = [item 1, item 2, item 3, item 4]
Array List are not equal here

結論

要查詢兩個陣列列表中的公共元素,在這些特定相似的陣列列表上使用 retain all 方法更為方便。在本文中,我們學習瞭如何使用 Java 中提供的各種方法來比較兩個相似的陣列列表。透過使用上述語法和演算法,我們開發了一些 Java 程式碼以有效的方式解決問題陳述。

另請參閱: Java 面試問題及答案

更新於: 2024年6月18日

1K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告