2

我的列表有时可以为空,返回类型应该是 int ex:

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

您能否让我知道是否有任何实用程序可用?

谢谢。

4

5 回答 5

5

关于什么

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

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

于 2013-08-01T18:06:53.737 回答
1

自己动手,把它放在一个方法中,最好放在一个类中。就像是:

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,则返回 size,那么您可以简单地删除该方法并更新所有调用的地方它是调用该方法的新方法。

于 2013-08-01T18:14:19.773 回答
1

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

这样你就有了

private List<String> list = Collections.<String>emptyList();

int size = list.size(); // list is never null, but could be an empty list.
于 2013-08-01T18:18:37.060 回答
0

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

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

它处理以下内容:

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

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

IllegalArgumentException - 如果对象未被识别则抛出

于 2018-10-29T11:32:07.773 回答
-1

在 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));
于 2020-09-09T07:59:18.153 回答