要判断两个不同类型的对象列表 List<A> 和 List<B> 是否包含相同的 x字段值(即两个列表中至少有一个 x是相同的),你可以使用 Java 8 的 Stream API 来实现。
java
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")
}
}