在Java中validation空集合和空集合的最佳实践

我想validation一个集合是否为空并且为null 。 任何人都可以让我知道最佳做法。

目前,我正在检查如下:

 if (null == sampleMap || sampleMap.isEmpty()) { // do something } else { // do something else } 

如果在项目中使用Apache Collections库,则可以使用CollectionUtils.isEmptyMapUtils.isEmpty方法分别检查集合或映射是否为空(即它们是“无效”)。

这些方法背后的代码或多或less是用户@icza在他的答案中写的。

不pipe你做什么,记住你写的代码越less,代码复杂度越低,你需要testing的代码就越less。

这是检查它的最好方法。 你可以写一个辅助方法来做到这一点:

 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并且algorithm的工作方式对于algorithm来说,如果集合是空的或者不是空的,那么algorithm是无关紧要的。

如果您使用Spring框架,那么您可以使用CollectionUtils来检查集合(List,Array)和Map等。

 if(CollectionUtils.isEmpty(...)) {...} 

当你使用弹簧,那么你可以使用

 boolean isNullOrEmpty = org.springframework.util.ObjectUtils.isEmpty(obj); 

其中OBJ是任何[地图,集合,arrays,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()); 

如果你需要检查null,那就是这样。 但是,如果你有这个控制权,只要可能,只要返回空的集合,并且只在以后检查空。

这个线程与C#大致相同,但是这些原则同样适用于java。 就像之前提到的那样,null应该只在返回时才返回

  • null可能意味着更具体的东西;
  • 你的API(合同)可能会强制你返回null。

你可以使用org.apache.commons.lang.Validate的“ notEmpty ”方法:

Validate.notEmpty(myCollection) – >validation指定的参数集合既不为空也不为零(无元素); 否则抛出exception。

对于所有集合的集合映射使用:isEmpty方法,这些集合对象上有。 但是你必须先做一个nulkl检查

地图;

…….. if(map!= null &&!map.isEmpty())……