检查EmptyOrNull以获取未知数量的集合和地图

时间:2018-12-06 03:50:02

标签: java dictionary collections java-8

我正在Spring Boot中尝试实现util

public static boolean isAllEmptyOrNull(Collection... collectionList) {
    for (Collection collection : collectionList) {
        if (!Collections.isEmpty(collection)) {
            return false;
        }
    }
    return true;
}

所以我可以处理以下情况:

  • isAllEmptyOrNull(listOfCat);
  • isAllEmptyOrNull(listOfDog,mapOfStringToString);
  • isAllEmptyOrNull(listOfDog,listOfCat);
  • isAllEmptyOrNull(listOfDog,listOfCat,mapOfStringToList,mapOfStringToMap);

衷心感谢您的帮助:)

更新于2018-12-06

感谢@Deadpool的帮助,我的解决方案证明了:

public static boolean isAllCollectionEmptyOrNull(Collection... collections) {
    for (Collection collection : collections) {
        if (!Collections.isEmpty(collection)) {
            return false;
        }
    }
    return true;
}

public static boolean isAllMapEmptyOrNull(Map... maps) {
    for (Map map : maps) {
        if (!Collections.isEmpty(map)) {
            return false;
        }
    }
    return true;
}

当然,您可以像nullpointer一样使用streammethod overloading

3 个答案:

答案 0 :(得分:2)

您可以有两种不同的util方法,一种用于检查Collection对象,另一种用于Map对象,因为Map不是Collection接口的子对象

public static boolean isAllEmptyOrNull(Collection... collectionList) {
    return Arrays.stream(collectionList).anyMatch(item->item==null || item.isEmpty());
}

public static boolean isAllEmptyOrNull(Map... maps) {
    return Arrays.stream(maps).anyMatch(item->item==null || item.isEmpty());
}

要检查所有对象nullempty

public static boolean isAllEmptyOrNull(Collection... collectionList) {
    return Arrays.stream(collectionList).allMatch(item->item==null || item.isEmpty());
}

public static boolean isAllEmptyOrNull(Map... maps) {
    return Arrays.stream(maps).allMatch(item->item==null || item.isEmpty());
}

答案 1 :(得分:2)

。由于Map不是Collection,因此您无法按需要创建通用名称。

当然,Collection... collectionList表示Collection类型的变量参数。

唯一的方法是将它们分成两个单独的存根,如:

public static boolean isAllEmptyOrNull(Collection... collectionList) {
    return Arrays.stream(collectionList).allMatch(Collection::isEmpty);
}

public static boolean isAllEmptyOrNull(Map... maps) {
    return Arrays.stream(maps).allMatch(Map::isEmpty);
}

答案 2 :(得分:1)

您可以尝试以下方法:

public static boolean isAllEmptyOrNull(Collection... collectionList) {
    return Arrays.stream(collectionList).anyMatch(Collection::isEmpty);
}