Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

เปรียบเทียบสอง List ใน Java: หารายการที่เหมือนกันและขาดหาย

List interface ใน Java 提供 methods 以 能够 比较 两个 Lists 并 找到 共同 和 缺失 的 项目 从 列表 中。

เปรียบเทียบสอง unsorted lists เพื่อความเท่าเทียม

如果 您 想要 检查 两个 lists 是否 相等, 即 包含 相同 的 项目 并且 在 相同 的 索引 处 出现, 那么 我们 可以 使用:

import java.util.Arrays; import java.util.List; public class CompareTwoLists { public static void main(String[] args) { List<String> listOne = Arrays.asList("a", "b", "c"); List<String> listTwo = Arrays.asList("a", "b", "c"); List<String> listThree = Arrays.asList("c", "a", "b"); boolean isEqual = listOne.equals(listTwo); System.out.println(isEqual); isEqual = listOne.equals(listThree); System.out.println(isEqual); } } 

Output:

true false 

正如 你 所見 equals() 方法 比較 項目 和 它們 在 列表 中 的 位置。

  • 如何 遍历 ArrayList 在 Java 中
  • 如何 从 列表 中 删除 重复 项
  • 如何 将 列表 转换 为 数组 在 Java 中

เปรียบเทียบสอง sorted lists

两个 lists 是否 包含 相同 的 项目?

要 比较 两个 lists 的 相等性 仅 就 项目 而言 而不 考虑 它们 的 位置, 我们 需要 使用 sort() 方法 从 Collections() 类。

例如:

import java.util.Arrays; import java.util.Collections; import java.util.List; public class CompareTwoLists { public static void main(String[] args) { 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); } } 

Output:

true true 

เปรียบเทียบสอง lists, 找 差异

List 接口 也 提供 方法 来 找到 两个 列表 之间 的 差异。

removeAll() 方法 比较 两个 列表 并 删除 所有 共同 的 项目。 剩下 的 是 额外 的 或 缺失 的 项目。

例如 当 我们 比较 两个 列表, listOne 和 listTwo 并且 我们 想要 找出 什么 项目 从 listTwo 缺失 我们 使用:

import java.util.ArrayList; import java.util.Arrays; public class CompareTwoArrayLists { public static void main(String[] args) { 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.removeAll(listTwo); System.out.println("Missing items from listTwo " + listOne); } } 

Output:

Missing items from listTwo [3] 

同样, 如果 我们 使用:

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

我们 会 得到:

Missing items from listOne [6, 7] 

เปรียบเทียบสอง lists, 找 共同 项目

retainAll() 方法 只 保留 在 两个 列表 中 都 共同 的 项目。 例如:

public class CompareTwoArrayLists { public static void main(String[] args) { 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.retainAll(listTwo); System.out.println("Common items in both lists " + listOne); } } 

Output:

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