要判斷兩個不同類型的對象列表 List<A> 和 List<B> 是否包含相同的 x字段值(即兩個列表中至少有一個 x是相同的),你可以使用 Java 8 的 Stream API 來實現。
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;public class CompareX {// 假設類 A 和 B 結構如下:static class A {private String x;// 構造方法、getter 省略public A(String x) { this.x= x; }public String getX() { return x; }}static class B {private String spdm;// 構造方法、getter 省略public B(String x) { this.x= x; }public String getX() { return x; }}/*** 判斷 lista 和 listb 是否有相同的 x值*/public static boolean hasSameX(List<A> lista, List<B> listb) {if (lista.isEmpty() || listb.isEmpty()) {return false;}// 將 listb 的 x提取為 Set,便于快速查找Set<String> xSet = listb.stream().map(B::getX).collect(Collectors.toSet());// 檢查 lista 中是否有任何一個 x在 xet 中return lista.stream().anyMatch(a -> spdmSet.contains(a.getX()));}// 使用示例public static void main(String[] args) {List<A> lista = List.of(new A("001"), new A("002"), new A("003"));List<B> listb = List.of(new B("004"), new B("002"), new B("005"));boolean result = hasSameX(lista, listb);System.out.println("是否有相同的 x: " + result); // 輸出: true(因為都有 "002")}
}