[英]Best practice to validate null and empty collection in Java
我想驗證一個集合是否為空和null
。 任何人都可以讓我知道最佳做法。
目前,我正在檢查如下:
if (null == sampleMap || sampleMap.isEmpty()) {
// do something
}
else {
// do something else
}
如果您在項目中使用Apache Commons Collections庫,您可以使用CollectionUtils.isEmpty
和MapUtils.isEmpty()
方法,它們分別檢查集合或地圖是否為空或空(即它們是“空安全”)。
這些方法背后的代碼或多或少是用戶@icza 在他的回答中所寫的。
無論您做什么,請記住,您編寫的代碼越少,隨着代碼復雜性的降低,您需要測試的代碼就越少。
這是最好的檢查方法。 你可以寫一個輔助方法來做到這一點:
public static boolean isNullOrEmpty( final Collection< ? > c ) {
return c == null || c.isEmpty();
}
public static boolean isNullOrEmpty( final Map< ?, ? > m ) {
return m == null || m.isEmpty();
}
如果您使用 Spring 框架,那么您可以使用CollectionUtils
來檢查集合(列表、數組)和映射等。
if(CollectionUtils.isEmpty(...)) {...}
就我個人而言,我更喜歡使用空集合而不是null
並且讓算法以這樣一種方式工作:對於算法來說,集合是否為空並不重要。
當您使用彈簧時,您可以使用
boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj);
其中 obj 是任何 [map,collection,array,aything...]
否則:代碼是:
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());
我們將檢查 Collection 對象是否為空,是否為空。 下面給出的所有這些方法都存在於 org.apache.commons.collections4.CollectionUtils 包中。
檢查列表或設置集合對象的類型。
CollectionUtils.isEmpty(listObject);
CollectionUtils.isNotEmpty(listObject);
檢查對象的地圖類型。
MapUtils.isEmpty(mapObject);
MapUtils.isNotEmpty(mapObject);
所有方法的返回類型都是布爾值。
如果您需要檢查空值,就是這樣。 但是,如果您對此有控制權,請盡可能返回空集合,然后僅檢查是否為空。
該線程與 C# 大致相同,但原則同樣適用於 java。 就像那里提到的那樣,只有在以下情況下才應返回 null
- null 可能意味着更具體的東西;
- 您的 API(合同)可能會強制您返回 null。
您可以使用org.apache.commons.lang.Validate
的“ notEmpty ”方法:
Validate.notEmpty(myCollection)
-> 驗證指定的參數集合既不是 null 也不是大小為零(無元素); 否則拋出異常。
對於包括地圖在內的所有集合,請使用這些集合對象上的isEmpty
方法。 但是你必須先做一個空檢查:
Map<String, String> map;
........
if(map!=null && !map.isEmpty())
......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.