Нет, этого метода не существует в Гуаве, и он фактически находится на нашем «кладбище идей».
Мы не верим, что «пусто или пусто» - это вопрос, который вы действительно хотите задать о коллекции.
Если коллекция может иметь значение NULL, а значение NULL следует рассматривать как пустое, устраните всю эту двусмысленность заранее, например:
Set<Foo> foos = NaughtyClass.getFoos();
if (foos == null) {
foos = ImmutableSet.of();
}
или вот так (если хотите):
Set<Foo> foos = MoreObjects.firstNonNull(
NaughtyClass.getFoos(), ImmutableSet.<Foo>of());
После этого вы можете использовать .isEmpty()
как обычно. Сделайте это сразу после вызова непослушного API, и вы оставите странности позади, вместо того, чтобы позволять этому продолжаться бесконечно.
И если «null, что на самом деле означает пустую коллекцию» не возвращается вам, а передается вам, ваша работа проста: просто позвольте NullPointerException
бросить a и заставить этого вызывающего абонента сформироваться.
null
как можно скорее устранить двусмысленность путем нормализации до пустой коллекции. Если вы просто не можете, тогда ладно, вы можете быть одним из <1% пользователей, которые действительно хотят написать свой собственный тривиальный помощник isNullOrEmpty (Collection).if (collection == null || collection.isEmpty())
в тех случаях, когда он вам нужен! Разве это так плохо?)Одна вещь, которую вы, как правило, найдете в Guava, - это то, что они очень враждебны по отношению к
null
s. Авторы хотят отговорить вас использоватьnull
столько, сколько вы, вероятно, делаете, и предоставление служебных методов, облегчающих использованиеnull
, будет контрпродуктивным с этой целью.Если вы хотите использовать парадигму Guava, подумайте, действительно ли источник этой коллекции (или массива) должен при желании возвращаться
null
. Если нет, подумайте о том, чтобы пометить его@NonNull
и вернуть пустые коллекции вместоnull
. Или в качестве параметра функции, которая ожидаетnull
беззначные списки, рассмотрите возможность использованияPreconditions.checkNotNull
, которая выдает исключение, еслиnull
(неожиданно) передается.Если
null
действительно законно,list == null || list.isEmpty()
не так уж и сложно.источник
В общих коллекциях есть CollectionUtils.isEmpty () .
источник
Spring Framework имеет специализированный класс утилиты, называемый
CollectionUtils
. И метод , который вы ищете:org.springframework.util.CollectionUtils.isEmpty
. Он возвращает true для пустых и пустых коллекций.А для массивов есть
org.springframework.util.ObjectUtils.isEmpty
метод, который ведет себя примерно так же.источник
В Apache CollectionUtils 4 есть метод CollectionUtils.emptyIfNull (), который возвращает пустой список, если коллекция равна нулю. Это очень полезно в цикле foreach, поэтому вам не нужно выполнять нулевую проверку перед повторением.
источник
Мое решение: MoreObjects.firstNonNull (list, Collections. EmptyList ())
Я использую Guava MoreObjects с коллекциями JDK.
источник
ImmutableList
.Посмотрите на Appache Collections CollectionUtils.isEmpty () возвращает true, если коллекция пуста или пуста
источник