Java List 过滤某个字段值为空的数据

在Java编程中,处理集合是一项基本而重要的技能。对于新手开发者来说,了解如何过滤列表中的数据是一个重要的步骤。在这篇文章中,我将向你详细介绍如何使用Java对List进行过滤,特别是我们要过滤掉某个字段值为空的数据。

总体流程

在开始之前,我们先把整体的步骤整理出来。我们将使用一个简单的例子,即使用一个Person类来表示人的信息,并通过Java的Stream API来过滤空值。

步骤 描述
1. 创建Person类 定义Person类及其属性
2. 创建示例数据 创建一个包含多个Person对象的List
3. 使用Stream API 通过Stream API过滤List中属性为空的数据
4. 输出结果 打印过滤后的List结果

步骤详情

1. 创建Person类

我们先定义一个简单的Person类,这是我们的数据模型。

// Person.java
public class Person {
    private String name;
    private Integer age;

    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public Integer getAge() {
        return age;
    }
}
代码说明:
  • nameagePerson 的两个属性。
  • 构造函数用于初始化这些属性。
  • getNamegetAge 方法用于获取属性值。

2. 创建示例数据

接下来,我们创建一个包含多个Person对象的List。

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 30));
        people.add(new Person(null, 25)); // name为空
        people.add(new Person("Bob", null)); // age为空
        people.add(new Person("Charlie", 22));
        
        // 继续处理...
    }
}
代码说明:
  • 我们使用ArrayList来存储Person对象。
  • 向列表中添加了一些具有不同nameage值的Person对象,其中有的字段为空。

3. 使用Stream API过滤List

现在我们可以使用Java 8引入的Stream API来过滤掉name为空的对象。

import java.util.List;
import java.util.stream.Collectors;

        // 过滤掉name为空的人
        List<Person> filteredPeople = people.stream()
            .filter(person -> person.getName() != null) // 判断name是否为空
            .collect(Collectors.toList()); // 收集结果到新的List

        // 输出结果
        filteredPeople.forEach(p -> System.out.println(p.getName() + ", " + p.getAge()));
代码说明:
  • people.stream() 将List转换成Stream。
  • filter() 方法用于指定过滤条件,这里检查name是否为null
  • collect(Collectors.toList()) 将过滤后的结果收集到新的List中。
  • forEach() 用于遍历并打印出过滤后的对象信息。

4. 输出结果

最后,我们在控制台输出过滤后的people列表。

类图设计

在这部分,我们可以用mermaid语法展示类图:

classDiagram
class Person {
    +String name
    +Integer age
    +Person(String name, Integer age)
    +String getName()
    +Integer getAge()
}

关系图

接下来,我们用mermaid语法展示一下关系图:

erDiagram
    PERSON {
        String name
        Integer age
    }
    PERSON ||--o{ "0..*" PERSON2 : has

结尾

通过上述步骤,我们完成了从创建基础数据模型到最终通过Java过滤列表,输出不为空的记录的过程。希望这篇文章能帮助你理解如何使用Java List和Stream API对数据进行过滤。如果你在实际操作中遇到问题,随时可以查阅Java官方文档或询问更有经验的开发者。不断实践,你将越来越熟悉这些Java的基本操作!