18910140161

判断不为空,怎么写比较好

顺晟科技

2022-09-15 19:00:15

186

有多个值,要么都为空,要么都不为空,有什么比较好的写法

Java 代码

import java.util.Arrays;

public class AllNulllOrNotNull {
    public static void main(String[] args) {
        System.out.println(allSameNullState("", "", ""));
        System.out.println(allSameNullState(null, null));
        System.out.println(allSameNullState("", "", null));
    }

    static boolean allSameNullState(Object... objs) {
        var count = Arrays.stream(objs).mapToInt(it -> (it == null ? 0 : 1)).sum();
        return count == 0 || count == objs.length;
    }
}

下面这个可能会快些,毕竟不需要执行完

    static boolean allSameNullState(Object... objs) {
        if (objs.length <= 1) {
            return true;
        }

        boolean firstState = objs[0] == null;
        return Arrays.stream(objs).allMatch(it -> (it == null) == firstState);
    }

你是想要这样的东西?

    public static void main(String[] args) {
        allNull(null, null, null);
    }

    public static boolean allNull(Object... args) {
        if (args == null || args.length == 0) {
            throw new RuntimeException("input is empty");
        }
        for (Object arg : args) {
            if (arg != null) {
                return false;
            }
        }
        return true;
    }

python中有个all方法

其它语言其实也可以用位运算的方式实现:

<?php
function all($data)
{
    if (!is_array($data)) {
        $data = array($data);
    }

    $result = 1;
    foreach ($data as $item) {
        $result &= intval(boolval($item));
    }

    return boolval($result);
}

如果为空转成0,不为空转成1,做&运算,最后再转成bool型。

我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航