import java.util.ArrayList; import java.util.List;// A类定义(修正语法+完善属性/方法) @Data class A {private String name;private String number;// 初始化listB,避免空指针private List<B> listB = new ArrayList<>(); }// B类定义(修正语法+完善属性/方法) @Data class B {private String name;private String number; }// 主类:测试核心逻辑 public class MatchABByNumber {public static void main(String[] args) {// 1. 准备测试数据List<A> listA = new ArrayList<>();listA.add(new A("A1", "001"));listA.add(new A("A2", "002"));listA.add(new A("A3", "003")); // 无匹配的BlistA.add(new A("A4", "002")); // 测试多个A匹配同一个BList<B> listBAll = new ArrayList<>();listBAll.add(new B("B1", "001"));listBAll.add(new B("B2", "002"));listBAll.add(new B("B3", "002")); // 测试一个A匹配多个BlistBAll.add(new B("B4", "004")); // 无匹配的A// 2. 核心逻辑:匹配number并将B添加到A的listB中(修正后的正确写法)for (A a : listA) {// 遍历所有B对象,匹配numberfor (B b : listBAll) {// 严格判空:避免a.getNumber()或b.getNumber()为null时抛异常if (a.getNumber() != null && b.getNumber() != null && a.getNumber().equals(b.getNumber())) {// 正确写法:向A的listB列表中添加匹配的B对象(累加,而非覆盖)a.getListB().add(b);}}}// 3. 验证结果:打印匹配后的信息System.out.println("=== 匹配结果 ===");for (A a : listA) {System.out.println("A对象(name=" + a.getName() + ", number=" + a.getNumber() + ")");System.out.println(" 匹配到的B对象数量:" + a.getListB().size());for (B b : a.getListB()) {System.out.println(" - B(name=" + b.getName() + ", number=" + b.getNumber() + ")");}}} }