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

Java中拼接字符串时如何忽略DTO的空值或Null值?

解决Java中DTO空值字段的字符串拼接问题

要实现只保留非空(null或空字符串)的标签和内容,可以用以下几种实用方式:

1. 基础条件判断法

用StringBuilder(单线程场景比StringBuffer更高效)逐个判断字段,仅当值非空时拼接对应标签和内容,最后清理末尾多余的逗号和空格:

StringBuilder sb = new StringBuilder();

// 处理ID字段
String id = someDTO.getId();
if (id != null && !id.isBlank()) {
    sb.append("<b> test Id </b> ").append(id).append(", ");
}

// 处理Type字段
String type = someDTO.getType();
if (type != null && !type.isBlank()) {
    sb.append("<b> Type: </b> ").append(type).append(", ");
}

// 处理Date字段
String date = someDTO.getDate();
if (date != null && !date.isBlank()) {
    sb.append("<b> Date: </b> ").append(date).append(", ");
}

// 移除末尾多余的", "
if (sb.length() > 0) {
    sb.setLength(sb.length() - 2);
}

String dummyVal = sb.toString();
System.out.println(dummyVal);

2. 提取工具方法简化重复代码

如果需要处理的字段较多,把判断和拼接逻辑抽成工具方法,减少冗余代码:

private static void appendIfPresent(StringBuilder sb, String label, String value) {
    if (value != null && !value.isBlank()) {
        sb.append(label).append(value).append(", ");
    }
}

// 调用工具方法
StringBuilder sb = new StringBuilder();
appendIfPresent(sb, "<b> test Id </b> ", someDTO.getId());
appendIfPresent(sb, "<b> Type: </b> ", someDTO.getType());
appendIfPresent(sb, "<b> Date: </b> ", someDTO.getDate());

if (sb.length() > 0) {
    sb.setLength(sb.length() - 2);
}

String dummyVal = sb.toString();
System.out.println(dummyVal);

3. Java 8+ Stream优雅实现

将标签和字段值封装成键值对,通过Stream过滤非空值后拼接,代码更简洁:

import java.util.AbstractMap.SimpleEntry;
import java.util.stream.Collectors;
import java.util.stream.Stream;

String dummyVal = Stream.of(
        new SimpleEntry<>("<b> test Id </b> ", someDTO.getId()),
        new SimpleEntry<>("<b> Type: </b> ", someDTO.getType()),
        new SimpleEntry<>("<b> Date: </b> ", someDTO.getDate())
)
// 过滤非空值
.filter(entry -> entry.getValue() != null && !entry.getValue().isBlank())
// 拼接单个条目为"标签+值"
.map(entry -> entry.getKey() + entry.getValue())
// 用", "连接所有有效条目
.collect(Collectors.joining(", "));

System.out.println(dummyVal);

版本兼容提示

如果使用Java 11以下版本,isBlank()可以替换为!value.trim().isEmpty(),注意必须先判断value不为null,避免空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:37:38