有没有办法将多个表中的列合并到单个列表?

时间:2013-11-28 12:30:38

标签: java mysql hibernate

我使用公共密钥从三个不同的表中收集记录,即三个表的公共列,并存储在每个,deg,deg的3个列表中。

Query query2 = s.createQuery("from StuPersonal where FRID = :dd");
query2.setParameter("dd",jp.getFRID());
per=query2.list();

Query query3 = s.createQuery("from StuDegree where FRID = :dd");
query2.setParameter("dd",jp.getFRID());
deg=query3.list();

Query query4 = s.createQuery("select city from StuWorkPref where FRID = :dd");
query2.setParameter("dd",jp.getFRID());
swf=query4.list();

现在,我需要将3个列表中的字段(列)组合成一个列表,我需要向用户提供输出......有什么办法吗?请指教..

我已将列表声明为

List<StuPersonal> per=new ArrayList();
List<StuDegree> deg=new ArrayList();
List<StuWorkPref> swp=new ArrayList();

2 个答案:

答案 0 :(得分:2)

您可以使用addAll方法连接两个Arraylists。它将参数化列表的所有成员添加到调用列表中。 在您的情况下,您将需要您提到的三个类的超类。

List<Superclass> finalList=new ArrayList();
finalList.addAll(per);
finalList.addAll(deg);
finalList.addAll(swp);

要改写,您可以将派生类对象存储在Base类的ArrayList中。使用这种方法,设计变得更清晰,因为您可以在超类中使用泛型方法,并让派生类重用它们。稍后,您可以为派生类提供过度使用的方法,以便对各个对象执行特定于类的操作。

答案 1 :(得分:0)

尝试,

List<Object[]> resList=new ArrayList<>();

int maxSize=/*Get the maximum size of three list*/

 for(int i=0;i<maxSize;i++){
    Object[] obj=new Object[3];
    obj[0]=peg.get(i);
    obj[1]=deg.get(i);
    obj[2]=swf.get(i);

    resList.add(obj);
 }