我想驗證集合是否爲空並且null
。任何人都可以讓我知道最佳做法。驗證Java中的空集合和空集合的最佳實踐
目前,我檢查如下:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
我想驗證集合是否爲空並且null
。任何人都可以讓我知道最佳做法。驗證Java中的空集合和空集合的最佳實踐
目前,我檢查如下:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
如果你在項目中使用的Apache Commons Collections庫,你可以使用CollectionUtils.isEmpty
和MapUtils.isEmpty()
方法分別檢查集合或地圖空或空(即它們是「空值安全」)。
這些方法背後的代碼或多或少是用戶@icza在他的回答中寫的。
無論您做什麼,請記住,您編寫的代碼越少,隨着代碼複雜程度的降低,需要測試的代碼就越少。
由於MapUtils.isEmpty是檢查地圖爲空或空的完美解決方案 –
這是檢查它的最好辦法。你可以寫一個輔助方法來做到這一點:
public static boolean isNullOrEmpty(final Collection<?> c) {
return c == null || c.isEmpty();
}
public static boolean isNullOrEmpty(final Map< ?, ? > m) {
return m == null || m.isEmpty();
}
就個人而言,我更喜歡使用,而不是null
空的藏品,並有算法的工作方式,對於算法也沒關係,如果集合爲空或不。
如果你需要檢查null,那就是這樣。但是,如果您對此有所控制,則只要可以,就返回空集合,然後僅檢查空集合。
This thread與C#大致相同,但這些原則同樣適用於java。就像提到的有,則應返回null只有
- 空可能意味着更具體的事情;
- 你的API(合同)可能會強制你返回null。
如果你使用Spring框架,那麼你可以使用CollectionUtils
要檢查兩個集合(列表,數組)和地圖等
if(CollectionUtils.isEmpty(...)) {...}
當您使用的彈簧,那麼你可以使用
boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);
其中obj是任何[圖,收集,陣列,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;
}
絃樂最好的是:
boolean isNullOrEmpty = (str==null || str.trim().isEmpty());
您可以使用org.apache.commons.lang.Validate
的 「notEmpty」 的方法:
Validate.notEmpty(myCollection)
- >驗證指定的參數集合既不是空也不是一個大小爲零(沒有元素);否則拋出異常。
對於所有集合的集合映射使用:isEmpty方法,它存在於這些集合對象上。但您必須先做一次nulkl檢查
Map map;
........ 如果(地圖= NULL & & map.isEmpty()!) ......
如果您正在使用Spring框架,您可以使用:
CollectionUtils.isEmpty(Collection collection);
如果提供的Collection爲null或空,則此方法返回true。
除了其他任何事情之外,請考慮*爲什麼*您使用'null == sampleMap'而不是'sampleMap == null'。大多數人認爲後者更具可讀性 - 前者是其他語言的延續。 –
如果你有興趣,還有[更多論證](http://pushinginertia.com/2011/05/why-yoda-conditions-are-bad-and-usage-of-javas-final-keyword-is-好/)@JonSkeet提到的東西 – eis
順便說一句,null收集不好。如果可能,請將其設爲空集合。 '參見Effective Java:Item 43 - 返回空數組或集合,不爲null。' –