簡體   English   中英

如何導航嵌套的arraylist?

[英]How to navigate nested arraylist?

我正在使用一個列表來檢索bean類對象的字段的值,在檢查列表時看起來像這樣

resultList=ArrayList<E>
[0]=UserDetails
firstname=xxxxxx
lastname=xxxxxx
username=xxxxxx
[1]=TaxDetails
earnings=xxxxxx
savings=xxxxxxx
a/c no=xxxxxx
[2]=null;
[3]=null;

現在我的問題是,在使用resultList.get(i)獲取值時,如何獲取類字段的值,我正在獲取UserDetailsTaxDetails ,這不是我的要求。 我如何進一步導航以獲取其字段? 請幫助!

像這樣迭代

for (UserDetails object : list) {

 }

要么

  for (int i=0;i<list.size();i++) {
      UserDetails object = list.get(i);     
  }

嘗試這個

String firstname = "",lastname="",username="",earnings="",savings="",ac="";
if(i==0)
{
    firstname = resultList.get(i).firstname;
    lastname = resultList.get(i). lastname;
    username = resultList.get(i). username;
}
else if(i==1)
{
    earnings = resultList.get(i). earnings;
    savings = resultList.get(i). savings;
    ac = resultList.get(i).acno;

}

您需要強制轉換為相關的Object才能查看其成員變量。

骯臟的方法只是做UserDetails user = (UserDetails)resultList.get(0);

但這是假設您知道UserDetails對象位於位置0,因此不是最佳實踐。

因此,您需要執行以下操作(如果要遍歷列表),以在執行強制轉換之前檢查存在的Object類型:

for (Object anObject : resultList){
  if (anObject instanceof UserDetails){
      UserDetails user = (UserDetails)anObject;
      String firstname = user.firstname;
  }else if (anObject instanceof TaxDetails){
      TaxDetails tax = (TaxDetails)anObject;
      String earnings = tax.earnings; 
  }
}

當然,如果您只是訪問一個值而不是迭代,則需要執行以下操作:

Object anObject = resultList.get(0);

然后執行instanceof比較並按照上面的循環進行轉換。

我認為您的列表有不同的類型元素,例如UserDetails,TaxDetails ?。 第一印象是我不認為在同一集合對象中保留不同的元素是個好主意。

解決當前問題

  for (Object obj : resultList) {
      if (obj instanceof UserDetails) {
          UserDetails userDetails = (UserDetails)obj;
          String firstname = userDetails.getFirstName();
          ...
      } else if (obj instanceof UserDetails) {
         .....
      }
  } 

希望對您有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM