繁体   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