0
点赞
收藏
分享

微信扫一扫

java筛选对象数组中某属性不为空的元素

Java筛选对象数组中某属性不为空的元素

在Java中,我们经常需要对对象数组进行筛选,只保留满足某些条件的元素。其中一个常见的需求是筛选出某个属性不为空的元素。本文将介绍如何使用Java实现这个功能。

示例场景

假设我们有一个Person类,每个Person对象都有一个名字属性name。我们有一个Person类型的数组,我们想要筛选出名字不为空的Person对象。

解决方案

我们可以使用Java 8的流(Stream)特性来解决这个问题。首先,我们需要导入java.util.stream包:

import java.util.stream.*;

然后,我们需要创建一个Person类型的数组并初始化它:

Person[] people = {
    new Person("Alice"),
    new Person("Bob"),
    new Person(""),
    new Person("Dave"),
    new Person("")
};

其中Person类的定义如下:

class Person {
    private String name;

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

    public String getName() {
        return name;
    }
}

现在,我们可以使用流的filter方法来筛选出名字不为空的Person对象:

Person[] nonEmptyPeople = Arrays.stream(people)
    .filter(person -> !person.getName().isEmpty())
    .toArray(Person[]::new);

在这个例子中,我们使用Arrays.stream方法将people数组转换为流。然后,我们调用filter方法来筛选出满足给定条件的元素,即名字不为空的Person对象。对于每个Person对象,我们使用person -> !person.getName().isEmpty()的Lambda表达式作为过滤条件。最后,我们使用toArray方法将流转换为Person对象的数组。

完整代码示例

下面是完整的代码示例:

import java.util.Arrays;
import java.util.stream.*;

class Person {
    private String name;

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

    public String getName() {
        return name;
    }
}

public class FilterNonNullExample {
    public static void main(String[] args) {
        Person[] people = {
            new Person("Alice"),
            new Person("Bob"),
            new Person(""),
            new Person("Dave"),
            new Person("")
        };

        Person[] nonEmptyPeople = Arrays.stream(people)
            .filter(person -> !person.getName().isEmpty())
            .toArray(Person[]::new);

        System.out.println(Arrays.toString(nonEmptyPeople));
    }
}

运行上述代码,输出结果为:

[Person{name='Alice'}, Person{name='Bob'}, Person{name='Dave'}]

总结

使用Java的流特性可以方便地筛选出对象数组中满足特定条件的元素。在本文中,我们介绍了如何使用Java 8的流来筛选出某个属性不为空的对象。通过使用filter方法和Lambda表达式,我们可以轻松地实现这一功能。

希望本文对你理解如何使用Java筛选对象数组中某属性不为空的元素有所帮助。祝你编程愉快!

举报

相关推荐

0 条评论