Class A 包含字段 x Class B 也包含字段 x,如果判断List<A> lista 和 List<B> listb 有相同的 x?
要判断两个不同类型的对象列表 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")}
}