Java 数据清洗
Dennis Lee
Software Engineer
| 书名 | 发布日期 | 评分 | 评论数 | 价格 |
|---|---|---|---|---|
| Python Crash Course | 1/10/23 | 4.8 | 165 | $30.61 |
| 9/13/19 | 4.8 | 2,521 | $38.00 | |
| Clean Code | 8/1/08 | [null] | [null] | [null] |
// book 缺少 reviewCount、rating 和 price BookSales book = new BookSales("Clean Code", LocalDate.of(2008, 8, 1), null, null, null)// rating 为 null,会抛出 NullPointerException int rating = book.rating();
Exception in thread "main" java.lang.NullPointerException
// 导入 Objects
import java.util.Objects;
// 使用 .isNull()
if (Objects.isNull(book.rating())) {
System.out.println("缺少评分");
}
缺少评分
import java.util.Optional;
// 数值用 Optional.ofNullable
double rating = Optional.ofNullable(book.rating()).orElse(0.0);
System.out.println("Book rating: " + rating);
Book rating: 0.0
// 字符串用 Objects.toString
String displayTitle = Objects.toString(book.title(), "[No Title]");
System.out.println(displayTitle);
Book title: [No Title]
import org.apache.commons.lang3.StringUtils; // 字符串工具
// book 的标题缺失 BookSales book = new BookSales(" ", LocalDate.of(2019, 9, 13), 2521, 4.5, 38.00)if StringUtils.isBlank(book.title()) { System.out.println("无效——标题为空"); }
无效——标题为空
// priceText 为空白
String priceText = " ";
// 转为数字前先检查空白
if StringUtils.isBlank(priceText) {
System.out.println("无效价格:检测到空白");
}
无效价格:检测到空白
java.util.Objects 与 java.util.OptionalNullPointerExceptionObjects.isNull() 检查 nullOptional.ofNullable() 提供默认值org.apache.commons.lang3.StringUtilsStringUtils.isBlank() 检测 ""、null 或空白Java 数据清洗