liugz168
liugz168
采纳率75%
2017-06-29 08:23 浏览 4.0k
已采纳

JAVA中如何给将List<Object obj>增加列?

10

JAVA中如何给将List增加列?

情况是这样的:
先从数据库中查询结果放到一个list1中,然后数据库中查询另外的结果放list2中,现在需要将list2的按列拼接到list1,如下图,根据大类将list2拼接到list1列的后面。
(实际情况中sql操作比较麻烦,所以只能分开查询再来拼接了)

图片说明

比如现在是list1是4行9列, 需要将list2的4列加到list1中,list1结果变成4行13列

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

10条回答 默认 最新

  • 已采纳
    baidu_26611019 蚂蚁冲锋队 2017-06-29 10:16

    你的意思应该是:两个列表list1、list2 可以看着两个二维矩阵 matrix1、matrix2
    比如:matrix1=
    [00,01,02]
    [10,11,12]
    [20,21,22]
    matrix2=
    [a0,a1,a2]
    [b0,b1,b2]
    [c0,c1,c2]
    所谓的列追加就是
    matrix3=
    [00,01,02, a0,a1,a2]
    [10,11,12, b0,b1,b2]
    [20,21,22, c0,c1,c2]

    这样应该没理解错吧

    回到你的问题,
    先进行可行性分析:
    List list 中的每一个成员相当于矩阵的一行,而要实现列追加相当于每一行都要增加成员,
    一般情况下Object中的成员变量是固定写死的,get() 、set() 方法都是针对已有的成员变量来实现的,所以如果Object写死了也就意味着
    列追加是不可实现的(当然这只是我个人认为)

    解决方案1:
    自定义的Object需要预留多个成员变量(比如: resv0、resv1、resv2、resv3、resv4 ... 个数要大于用于追加的列表(List2)的列数,
    当然名称可以改为更具识别性的名字,切记不能与已有的成员重名)并为他们写好get() 、set()方法。

                                int len1=List1.size();
                                int len2=List2.size();
                                for(int i=0;i<len1;i++){
                                                for(int j=0;j<len2;j++){
                                                    Object1 obj=List1.get(i);  //Object1 Object2 自定义的数据类
                                                    Object2 obj2=List2.get(j);
                                                    obj.setX0(obj2.getX0());
                                                    obj.setX1(obj2.getX1());
                                                    obj.setX2(obj2.getX2());
                                                    obj.setX3(obj2.getX3());
                                    }
                                }
    

    解决方案2:
    提供一种思路
    建议一个大的表table0,包含table1和table2的所有列,然后循环将List1 List2中的内容通过sql语句添加的table0中,那么得到的table0
    的每一个行就是原来两个表的列追加了。

    点赞 评论 复制链接分享
  • qq_38494537 chenjiexixi 2017-06-29 08:33

    没太搞懂你的意思,将list2拼接到list1列的后面,直接add方法不可以么?
    如果是增加列,联表查询就可以了啊
    SELECT * FROM List1,List2;

    点赞 评论 复制链接分享
  • ljlfcg111 haha我逗 2017-06-29 08:34

    list1.addAll(list2);

    点赞 评论 复制链接分享
  • ljheee ljheee 2017-06-29 08:37

    把list1 和list2 的内容,分别保存到文件,然后2个文件内容追加就行了

    点赞 评论 复制链接分享
  • qq_31206677 qq_31206677 2017-06-29 08:48

    看不懂什么意思,用List>装数据就好了,一个对象数据存一个map,你说的增加列看不懂什么意思

    点赞 评论 复制链接分享
  • sinat_38802280 Yu_yangfeng 2017-06-29 08:49

    关联查询,把两张表的结果放到一起就行了

    点赞 评论 复制链接分享
  • xiaojielanbaihe xiaojielanbaihe 2017-06-29 08:59

    List1,List2里放的都是Map,循环两个List,大类名(最好是大类ID)为Key判断,相同Key的Map用map.addAll(---)把两个Map合到一起

    点赞 评论 复制链接分享
  • xiaojielanbaihe xiaojielanbaihe 2017-06-29 09:07

    不过要注意map.addAll方法会把相同key的值覆盖掉,所以两个list里的Map取名不能一样

    点赞 评论 复制链接分享
  • sj18182656342 黄河默默 2017-06-29 09:21

    addAll(这是加上的list)加到这个后面去了

    点赞 评论 复制链接分享
  • Wisdom_zgz Wisdom_zgz 2017-06-29 09:52

    两个表连接查询,用‘中年’,‘老年’等这列当where条件,例如:把"中年"当成一列,列名为“n”
    select l1.* ,l2.* from list1 l1,list2 l2 where l1.n=l2.n;就可以了

    点赞 评论 复制链接分享

相关推荐