实用程序,用于检查null,如果java中的集合/列表为空,则返回大小为0



我有一个列表,有时可能为null,返回类型应该是int ex:

int size = 0; 
if(list != null) {
    size = list.size;
} 

你能告诉我是否有公用设施吗?

谢谢。

怎么样

int size = (list == null) ? 0 : list.size();

我不知道你为什么想要一个实用程序,因为上面看起来很简单。

滚动自己的,将其放入一个方法中,最好放入一个类中。类似于:

public class CollectionUtils
{
    private CollectionUtils()
    {
    }
    public static getSize(final List<?> list)
    {
        // I try to make all my variables final, and I have a dislike of the ternary (?:)    
        // operator...
        final int size;
        if(list == null)
        {
            size = 0;
        }
        else
        {
            size = list.size();
        }
        return (size);
     }
 }

通过将它放在一个方法中,如果以后找到更好的方法,您可以只在一个地方更新代码。如果语言在未来也会以某种方式发生变化,比如?list.size(),如果它为null,它会返回0,如果它不为null,则返回大小,那么你可以简单地删除该方法,并更新所有调用它的地方,使其成为调用该方法的新方式。

您可以使用Collections.emptyList()而不是使用null值

这样你就只有

private List<String> list = Collections.<String>emptyList();
int size = list.size(); // list is never null, but could be an empty list.

org.apache.commons.collections4.CollectionUtils#size(Object对象)返回以下内容:

指定集合的大小,如果对象为空则为0

它处理以下内容:

  • 集合-集合大小
  • 地图-地图大小
  • 数组-数组大小
  • Iterator-迭代器中剩余的元素数
  • 枚举-枚举中剩余的元素数

就我个人而言,我希望参数类型至少是Collection,而不是Object,以增加编译时的安全性。因为它可以抛出ff。异常:

IllegalArgumentException-如果对象无法识别,则引发

在Goole guava的帮助下,您可以使用CollectionUtils.size()函数

import org.apache.commons.collections.CollectionUtils;

// Test case:
// 0
int size = CollectionUtils.size(null);
//2
int size2 = CollectionUtils.size(Lists.newArrayList(2,3));

虽然公认的答案可以说是最好的答案,但我发现一直输入它很乏味。我最终写了这两个小实用程序:

static int csize(Collection<?> c) { return c != null ? c.size() : 0; }
static int csize(Map<?> m) { return m != null ? m.size() : 0; }

现在我使用例如:

int size = csize(list);

最新更新