插件窝 干货文章 Java中如何高效判断多个值是否同时为空或非空?

Java中如何高效判断多个值是否同时为空或非空?

Objects null String 判断 944    来源:    2025-03-15

在Java中,判断多个值是否同时为空或非空可以通过多种方式实现。以下是几种高效的方法:

1. 使用 Stream API

如果你有一组对象,可以使用 Stream API 来判断它们是否都为空或都非空。

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

public class Main {
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "Hello";
        String str3 = "World";

        List<String> strings = Arrays.asList(str1, str2, str3);

        // 判断所有值是否都为空
        boolean allNull = strings.stream().allMatch(Objects::isNull);
        System.out.println("All null: " + allNull); // 输出: All null: false

        // 判断所有值是否都非空
        boolean allNonNull = strings.stream().allMatch(Objects::nonNull);
        System.out.println("All non-null: " + allNonNull); // 输出: All non-null: false
    }
}

2. 使用 Objects 类的 isNullnonNull 方法

如果你只有几个值,可以直接使用 Objects.isNullObjects.nonNull 方法来判断。

import java.util.Objects;

public class Main {
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "Hello";
        String str3 = "World";

        // 判断所有值是否都为空
        boolean allNull = Objects.isNull(str1) && Objects.isNull(str2) && Objects.isNull(str3);
        System.out.println("All null: " + allNull); // 输出: All null: false

        // 判断所有值是否都非空
        boolean allNonNull = Objects.nonNull(str1) && Objects.nonNull(str2) && Objects.nonNull(str3);
        System.out.println("All non-null: " + allNonNull); // 输出: All non-null: false
    }
}

3. 使用 Optional

如果你想要更优雅地处理空值,可以使用 Optional 类。

import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "Hello";
        String str3 = "World";

        // 判断所有值是否都为空
        boolean allNull = Optional.ofNullable(str1).isEmpty() && 
                          Optional.ofNullable(str2).isEmpty() && 
                          Optional.ofNullable(str3).isEmpty();
        System.out.println("All null: " + allNull); // 输出: All null: false

        // 判断所有值是否都非空
        boolean allNonNull = Optional.ofNullable(str1).isPresent() && 
                             Optional.ofNullable(str2).isPresent() && 
                             Optional.ofNullable(str3).isPresent();
        System.out.println("All non-null: " + allNonNull); // 输出: All non-null: false
    }
}

4. 使用 varargs 方法

如果你有多个值并且想要一个通用的方法来判断它们是否都为空或都非空,可以使用 varargs 方法。

import java.util.Objects;

public class Main {
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "Hello";
        String str3 = "World";

        // 判断所有值是否都为空
        boolean allNull = areAllNull(str1, str2, str3);
        System.out.println("All null: " + allNull); // 输出: All null: false

        // 判断所有值是否都非空
        boolean allNonNull = areAllNonNull(str1, str2, str3);
        System.out.println("All non-null: " + allNonNull); // 输出: All non-null: false
    }

    public static boolean areAllNull(Object... objects) {
        for (Object obj : objects) {
            if (obj != null) {
                return false;
            }
        }
        return true;
    }

    public static boolean areAllNonNull(Object... objects) {
        for (Object obj : objects) {
            if (obj == null) {
                return false;
            }
        }
        return true;
    }
}

总结

  • 如果你有一组对象,使用 Stream API 是最简洁的方式。
  • 如果你只有几个值,直接使用 Objects.isNullObjects.nonNull 方法即可。
  • 如果你想要更优雅地处理空值,可以使用 Optional 类。
  • 如果你需要通用的方法,可以使用 varargs 方法。

根据你的具体需求选择合适的方法即可。