проверьте EmptyOrNull на неизвестное количество коллекций и карт - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь добиться util, как это в Spring Boot:

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, listOf *OfOring)Буду искренне признателен за любую помощь:)

    Обновлено 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;
    }
    

    Конечно, вы можете использовать stream и method overloading как nullpointer .

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Вы можете использовать два различных метода утилит: один для проверки 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());
}

Для проверкивсе объекты null или empty

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());
}
0 голосов
/ 06 декабря 2018

Нет .Вы не можете создать его так, как вам нужно, поскольку Map не является Collection.

И, конечно, Collection... collectionList означает var argsдля 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);
}
0 голосов
/ 06 декабря 2018

Вы можете попробовать это:

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