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]