2013-10-24 51 views
0

我用一个列表来检索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)获取值,我得到UserDetails,TaxDetails这不是我的要求。我如何导航进一步获取其领域?请帮助!

+0

whta贵'resultList'包含? UserDetails或TaxDetails? –

回答

0

迭代这样

for (UserDetails object : list) { 

} 

for (int i=0;i<list.size();i++) { 
     UserDetails object = list.get(i);  
    } 
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; 

} 
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比较和投在上面的循环。

+0

非常感谢,很好的解释! –

0

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

为了解决目前的问题

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

我希望它能帮助

+0

感谢它的工作! –

+0

欢迎:),并可以请你接受它作为答案:) – Jayasagar

+0

我已经有。 :) –