Лучшая практика проверки пустой и пустой коллекции в Java
Я хочу проверить, пуста ли коллекция и null
. Может кто-нибудь, пожалуйста, дайте мне знать о лучшей практике.
В настоящее время я проверяю, как показано ниже:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
Ответы
Ответ 1
Если вы используете библиотеку Apache Collections в своем проекте, вы можете использовать методы CollectionUtils.isEmpty
и MapUtils.isEmpty
, которые соответственно проверяют, является ли коллекция или карта пустой или нулевой (то есть они являются "нулевыми" ).
Код, лежащий в основе этих методов, более или менее то, что пользователь @icza написал в своем ответе.
Независимо от того, что вы делаете, помните, что чем меньше кода вы пишете, тем меньше кода вам нужно проверить, так как сложность вашего кода уменьшается.
Ответ 2
Это лучший способ проверить это. Вы можете написать вспомогательный метод для этого:
public static boolean isNullOrEmpty( final Collection< ? > c ) {
return c == null || c.isEmpty();
}
public static boolean isNullOrEmpty( final Map< ?, ? > m ) {
return m == null || m.isEmpty();
}
Ответ 3
Лично я предпочитаю использовать пустые коллекции вместо null
и алгоритмы работают таким образом, что для алгоритма не имеет значения, пуста ли коллекция или нет.
Ответ 4
Если вы используете рамки Spring, вы можете использовать CollectionUtils
для проверки как с коллекциями (List, Array), так и с картой и т.д.
if(CollectionUtils.isEmpty(...)) {...}
Ответ 5
Когда вы используете spring, вы можете использовать
boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);
где obj - любое [map, collection, array, aythink...]
в противном случае: код:
public static boolean isEmpty(Object[] array) {
return (array == null || array.length == 0);
}
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj.getClass().isArray()) {
return Array.getLength(obj) == 0;
}
if (obj instanceof CharSequence) {
return ((CharSequence) obj).length() == 0;
}
if (obj instanceof Collection) {
return ((Collection) obj).isEmpty();
}
if (obj instanceof Map) {
return ((Map) obj).isEmpty();
}
// else
return false;
}
для наилучшего String:
boolean isNullOrEmpty = (str==null || str.trim().isEmpty());
Ответ 6
Если вам нужно проверить значение null, это так. Однако, если у вас есть контроль над этим, просто возвращайте пустую коллекцию, когда можете, и проверьте только на пустое позже.
Этот поток о том же, что и в С#, но принципы одинаково хорошо применимы к java. Как упоминалось там, null должен быть возвращен, только если
- null может означать нечто более конкретное;
- ваш API (контракт) может заставить вас вернуть null.
Ответ 7
Вы можете использовать org.apache.commons.lang.Validate
" notEmpty" метод:
Validate.notEmpty(myCollection)
→ Проверить, что указанная коллекция аргументов не является ни нулевым, ни нулевым (без элементов); в противном случае выбрасывается исключение.
Ответ 8
Для всех карт mapinclusing используйте метод isEmpty, который есть в этих объектах коллекции. Но вы должны сделать проверку nulkl перед
Карта карты;
........
if (map!= null &! map.isEmpty())
......