Java中处理空值,拼接firstName、middleName、lastName获取员工全名
实现Employee类的getFullName方法(处理null与空字符串)
嗨,我来帮你搞定这个全名拼接的问题。核心需求就是把firstName、middleName、lastName三个字段组合成全名,但得妥善处理null、空字符串甚至纯空格的情况,避免出现多余空格或者奇怪的空内容。
方案一:用列表收集有效字段(Java 7及以上可用)
这是最直观的实现方式,逻辑清晰,容易维护:
import java.util.ArrayList; import java.util.List; public class Employee { private String firstName; private String middleName; private String lastName; // 这里省略setters和getters public String getFullName() { List<String> validNameParts = new ArrayList<>(); // 检查并添加firstName if (firstName != null && !firstName.trim().isEmpty()) { validNameParts.add(firstName.trim()); } // 检查并添加middleName if (middleName != null && !middleName.trim().isEmpty()) { validNameParts.add(middleName.trim()); } // 检查并添加lastName if (lastName != null && !lastName.trim().isEmpty()) { validNameParts.add(lastName.trim()); } // 用空格拼接所有有效部分,无有效部分则返回空字符串 return String.join(" ", validNameParts); } }
方案二:用Stream简化代码(Java 8及以上可用)
如果你的项目用的是Java 8或更高版本,用Stream API可以让代码更简洁,逻辑和上面完全一致:
import java.util.stream.Collectors; import java.util.stream.Stream; public class Employee { private String firstName; private String middleName; private String lastName; // 这里省略setters和getters public String getFullName() { return Stream.of(firstName, middleName, lastName) .filter(part -> part != null && !part.trim().isEmpty()) // 过滤无效字段 .map(String::trim) // 去除首尾空格 .collect(Collectors.joining(" ")); // 用空格拼接 } }
测试场景验证
这两个方案都能正确处理各种边界情况:
- 三个字段都有效:
firstName="John", middleName="Michael", lastName="Doe"→ 返回"John Michael Doe" - middleName为null:
firstName="Jane", middleName=null, lastName="Smith"→ 返回"Jane Smith" - 字段含纯空格:
firstName=" Alice ", middleName="", lastName=" Brown "→ 返回"Alice Brown" - 所有字段无效:返回空字符串
""
这样实现既保证了代码的健壮性,又能灵活应对各种输入情况~
内容的提问来源于stack exchange,提问作者Shashank K
相关产品推荐
相关产品推荐

