[英]Java check empty ArrayList as an class structure
我正在嘗試創建本示例中的類結構:
public class SubjectListStructure {
public String topic_id;
public String topic_title;
public String created_date;
public String avatar_url;
public String vote;
public String name_family;
}
現在,我想創建一個由這些對象組成的ArrayList:
ArrayList<SubjectListStructure> nSubjects = = new ArrayList<SubjectListStructure>();
但是現在我無法檢查nSubjects
是否為空或是否包含一些與此代碼類似的數據:
public static Boolean ContainsAllNulls(ArrayList<SubjectListStructure> arrList)
{
if(arrList != null)
{
for(SubjectListStructure a : arrList)
if(a != null) return false;
}
return true;
}
或nSubjects.isEmpty()
此解決方案和ContainsAllNulls(nSubjects)
無法正確檢查並返回錯誤結果
首先,您不應該在列表中允許null
。 在這種情況下,簡單的List.isEmpty()
會告訴您列表是否為空。
如果您不能或不想禁止null
,那么您的代碼可以正常工作,並且可以正確測試列表是否僅包含null
。
您甚至不必將其與isEmpty()
方法結合使用,因為增強的for
可以用於空列表和數組(在這種情況下, for
的正文將不會執行)。
你可以概括你的代碼是這樣的,其適用於不只是ArrayList
秒,但對所有Collection
S(單,套等),並與任何元素類型不只是你的自定義SubjectListStructure
類型:
public static boolean emptyOrAllNulls(Collection<?> c) {
if (c != null)
for (Object o : c)
if(o != null)
return false;
return true;
}
請注意,增強的for
使用Collection.iterator()
獲得Iterator
以遍歷集合的元素。 如果集合為空,則首先檢查集合是否包含任何元素並且不通過迭代器會更有效:
public static boolean emptyOrAllNulls(Collection<?> c) {
if (c != null && !c.isEmpty())
for (Object o : c)
if(o != null)
return false;
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.