You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查List<Book>中是否存在null或空字符串并返回对应提示

实现方法

方案说明

int类型的id是基本数据类型,不会出现null的情况,所以只需校验name和author两个字符串类型的属性是否为null或空字符串即可。你可以先封装一个校验结果类来统一返回布尔校验结果和错误提示列表,再遍历集合完成校验。


步骤1:定义校验结果封装类

class ValidateResult {
    // 校验结果:true=全部属性合法,false=存在空属性
    private boolean valid;
    // 错误提示列表
    private List<String> errorMsgs;

    public ValidateResult(boolean valid, List<String> errorMsgs) {
        this.valid = valid;
        this.errorMsgs = errorMsgs;
    }

    // 按需添加getter、setter方法
    public boolean isValid() {
        return valid;
    }

    public List<String> getErrorMsgs() {
        return errorMsgs;
    }
}

步骤2:编写校验逻辑

普通遍历写法

public ValidateResult checkBookList(List<Book> bookList) {
    List<String> errors = new ArrayList<>();
    for (Book book : bookList) {
        boolean isEmpty = false;
        // 校验name
        if (book.name == null || book.name.trim().isEmpty()) {
            isEmpty = true;
        }
        // 校验author
        if (book.author == null || book.author.trim().isEmpty()) {
            isEmpty = true;
        }
        if (isEmpty) {
            errors.add(String.format("id %d has empty value", book.id));
        }
    }
    // 错误列表为空则校验通过
    return new ValidateResult(errors.isEmpty(), errors);
}

Java8+ Stream流简洁写法

import java.util.stream.Collectors;

public ValidateResult checkBookListWithStream(List<Book> bookList) {
    List<String> errors = bookList.stream()
            .filter(book -> book.name == null || book.name.trim().isEmpty()
                    || book.author == null || book.author.trim().isEmpty())
            .map(book -> String.format("id %d has empty value", book.id))
            .collect(Collectors.toList());
    return new ValidateResult(errors.isEmpty(), errors);
}

步骤3:调用测试

ValidateResult result = checkBookList(x);
// 输出校验结果:false
System.out.println("校验结果:" + result.isValid());
// 输出错误提示:[id 1 has empty value, id 2 has empty value]
System.out.println("错误信息:" + result.getErrorMsgs());

注意点

如果你的Book类的属性是private权限,需要补充getName()、getAuthor()、getId()三个getter方法,校验时调用getter方法取值即可。


内容的提问来源于stack exchange,提问作者senaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:45:09