Java 中根据 number 匹配并添加对象到集合

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")); // 无匹配的B
        listA.add(new A("A4", "002")); // 测试多个A匹配同一个B

        List<B> listBAll = new ArrayList<>();
        listBAll.add(new B("B1", "001"));
        listBAll.add(new B("B2", "002"));
        listBAll.add(new B("B3", "002")); // 测试一个A匹配多个B
        listBAll.add(new B("B4", "004")); // 无匹配的A

        // 2. 核心逻辑:匹配number并将B添加到A的listB中(修正后的正确写法)
        for (A a : listA) {
            // 遍历所有B对象,匹配number
            for (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() + ")");
            }
        }
    }
}

 

posted @ 2025-12-30 06:37  贩卖长江水  阅读(3)  评论(0)    收藏  举报