繁体   English   中英

用于检查 null 并在 java 中的集合/列表为空时将大小返回为 0 的实用程序

[英]Utility to check null and return size as 0 if empty for a collection/list in java

我有一个有时可以为 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()如果它为空则返回 0 或者如果它不为空则返回大小,那么您可以简单地删除该方法并更新所有调用它的地方都是调用方法的新方式。

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

这样你刚刚

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 object)返回以下内容:

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

它处理以下内容:

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

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

IllegalArgumentException - 如果无法识别对象则抛出

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

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);

在 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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM