簡體   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