如何导航嵌套的arraylist?

时间:2013-10-24 10:40:40

标签: java spring java-ee collections 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这不是我的要求。我怎样才能进一步导航以获取其字段?请帮助!

4 个答案:

答案 0 :(得分:0)

像这样迭代

for (UserDetails object : list) {

 }

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

答案 1 :(得分:0)

试试这个

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;

}

答案 2 :(得分:0)

您需要转换为相关的Object才能看到它的成员变量。

一种肮脏的方式就是做UserDetails user = (UserDetails)resultList.get(0);

但是假设你知道UserDetails对象位于0位置,所以不是最佳实践。

所以你想要做这样的事情(如果你在列表中进行迭代),在执行转换之前检查对象的类型:

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比较和转换。

答案 3 :(得分:0)

我认为你的列表有不同的类型元素,比如UserDetails,TaxDetails?第一印象我不认为将不同的元素保存在同一个集合对象中是个好主意。

解决当前问题

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

我希望它有所帮助