【问题标题】:How to navigate nested arraylist?如何导航嵌套的arraylist?
【发布时间】:2013-10-24 10:40:40
【问题描述】:

我正在使用一个列表来检索 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,这不是我的要求。我如何进一步导航以获取其字段?请帮忙!

【问题讨论】:

  • 您的resultList 包含哪些内容? UserDetailsTaxDetails?

标签: java spring jakarta-ee collections arraylist


【解决方案1】:

这样迭代

for (UserDetails object : list) {

 }

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

【讨论】:

    【解决方案2】:

    试试这个

    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;
    
    }
    

    【讨论】:

      【解决方案3】:

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

      解决当前问题

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

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        您需要转换为相关的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 比较并按照上面的循环进行转换。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-02-03
          • 1970-01-01
          • 2019-09-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-01
          相关资源
          最近更新 更多