Best practice to validate null and empty collection in Java
我想验证一个集合是否为空,以及
目前,我检查如下:
1 2 3 4 5 6 | if (null == sampleMap || sampleMap.isEmpty()) { // do something } else { // do something else } |
如果在项目中使用Apache Commons Collections库,则可以使用
这些方法背后的代码或多或少就是user@icza在其答案中所写的代码。
不管您做什么,记住编写的代码越少,随着代码复杂性的降低,需要测试的代码就越少。
这是最好的检查方法。您可以编写一个助手方法来执行此操作:
1 2 3 4 5 6 7 | 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框架,那么可以使用
1 | if(CollectionUtils.isEmpty(...)) {...} |
就我个人而言,我更喜欢使用空集合而不是
使用弹簧时,可以使用
1 | boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj); |
其中obj是任何[map,collection,array,aythink…]
否则:代码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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; } |
对于字符串,最好是:
1 | boolean isNullOrEmpty = (str==null || str.trim().isEmpty()); |
您可以使用
如果您需要检查是否为空,这就是方法。但是,如果您对此有控制权,那么只要您可以,只要返回空集合,稍后只检查空集合。
这个线程和C是一样的,但是这些原理同样适用于Java。如前所述,只有在
- null might mean something more specific;
- your API (contract) might force you to return null.
对于所有集合,包括映射使用:这些集合对象上的IsEmpty方法。但是你必须先检查一下
地图地图;
……如果(地图)!=空!图IsIvType()……