如何在循环时将列表添加到另一个列表?

时间:2013-12-27 09:41:58

标签: java hibernate hql

我有一个列表,其中包含从数据库中获取的对象(记录)。我需要在循环中添加另一个泛型类列表。当循环执行时,最终列表只包含最后一个元素。我的编码是..

List<modelclass> mdlclasslist=new ArrayList();
for(Class_1 a:class1list) {
  Query qr=s.createQuery("from Class_2 where ID= :f and code= :j order by mark desc");
  qr.setParameter("f",id);
  qr.setParameter("j",code);
  List<Class_2> b=new ArrayList();
  b=qr.list();
  for(Class_2 cls:b) {
    modelclass mdl=new modelclass(cls.getID(),cls.getCode(),cls.getMark());
    mdlclasslist.add(mdl);
  }
}

mdlclasslist包含相同的对象。它不会添加查询所需的每个对象。请提供建议。

5 个答案:

答案 0 :(得分:1)

您的查询似乎会为每个Class_1项反复返回相同的列表,因为 ID和代码永远不会更改。我假设你的代码应该是这样的:

Query qr=s.createQuery("from Class_2 where ID= :f and code= :j order by mark desc");

for( Class_1 a : class1list ) 
{
    qr.setParameter( "f", a.id );
    qr.setParameter( "j", a.code );

    for( Class_2 cls: qr.list() )
    {
        modelclass mdl=new modelclass(cls.getID(),cls.getCode(),cls.getMark());
        mdlclasslist.add(mdl);
    }
}

答案 1 :(得分:0)

在添加之前如何调试和打印第二个列表中的元素数量? 不确定是否要将从数据库中检索的列表追加到预先初始化的列表中... 但是,我会将第一个列表定义为泛型类型Class_1(BTW:阅读Java naming conventions),然后使用addAll

yourList.addAll(theListFromDB);

答案 2 :(得分:0)

试试这个

listInstance.addAll(anotherListInstavce);

答案 3 :(得分:0)

首先,我会检查我的源列表,从DB填充的源列表是否有多于1个元素。如果您正在使用JDBC,则不能进一步移动结果集对象是一个非常常见的错误。

其次,如果你需要这样的集合操作实用程序,我建议看看commons-collections ListUtils类。

答案 4 :(得分:0)

所有集合都有一个简单的方法可以将一个集合的数据添加到其他集合中。

list2.addAll(list1);

您可以简单地使用此方法...