【问题标题】:How to iterate over a nested list如何遍历嵌套列表
【发布时间】:2011-08-22 17:37:26
【问题描述】:

嗨,我有一个休眠查询,它给了我一个类型为List<List<integer>> 的列表。 我该如何迭代呢?我的休眠查询是:

String SQL_QUERY = "select DISTINCT cbl.franchiseId,cbl.resellerId from 
     CustomerBusinessLocation cbl where cbl.cmcustLocId in (:locationId)";

Query query = getSession().createQuery(SQL_QUERY); 

query.setParameterList("locationId", customerLocId);

List<List<Integer>> rc_list = query.list();

或者,有没有其他方法可以轻松提取这些数据?

【问题讨论】:

    标签: java hibernate hql


    【解决方案1】:

    此查询不返回 List&lt;List&lt;Integer&gt;&gt;。它返回一个List&lt;Object[]&gt;Object[] 数组包含每个请求字段的一个元素。在您的情况下,每个Object[] 将在索引0 处包含franchiseId,在索引1 处包含resellerId

    这当然在the reference documentation中有解释。

    因此迭代应该如下所示:

    List<Object[]> rows = query.list();
    for (Object[] row : rows) {
        Integer franchiseId = (Integer) row[0];
        Integer resellerId = (Integer) row[1];
        // ...
    }
    

    【讨论】:

      【解决方案2】:

      要迭代嵌套列表,您只需嵌套 for 循环。

      for(List<Integer> list : rc_list){
          for(Integer i : list){
            //do stuff
          }
      }
      

      【讨论】:

      • 它不工作显示“java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List”
      • @Khoyendra:请参阅 JB Nizet 的回答,了解为什么您没有得到预期的结果。
      猜你喜欢
      • 2019-08-22
      • 2015-05-16
      • 2020-11-13
      • 1970-01-01
      • 2015-12-06
      • 2021-09-19
      • 2021-10-30
      • 1970-01-01
      相关资源
      最近更新 更多