我使用公共密钥从三个不同的表中收集记录,即三个表的公共列,并存储在每个,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();
答案 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);
}