weixin_42308889 2009-04-28 23:11
浏览 203
已采纳

关于java 中LIST对象转存?

本人初学JAVA 有个小问题
有个LIST对象,有a,b,c,d,e五个元素都为string类型
有值为:{aa,11,name1,bb,cc},
{aa,11,name2,bb,cc},
{aa,12,name1,bb,cc},
{aa,12,name2,bb,cc},
如果要把它转变为另个LIST.也有5个元素,其中c元素为一个LIST对象,
转变方法为a,b元素相同条件下将c元素变为LIST对象。
即:{aa,11,{name2},bb,cc},
{aa,12,{name1,name2},bb,cc},
请问该如何实现,哪位牛人给个实现方法,谢谢
[b]问题补充:[/b]
lovewhzlq老兄:你写得判断的方法我试了可以了,但是可以把给新的LIST赋值的代码写下吗?谢谢~~~~~~~~~~ :x
[b]问题补充:[/b]
最关键就是把要变成LIST的那个元素的赋值写法

  • 写回答

2条回答 默认 最新

  • wanghaolovezlq 2009-04-29 00:16
    关注

    [code="java"]
    import java.util.*;

    public class ListTest {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        List<List<String>> list = new ArrayList<List<String>>();
    
        List<String> l1 = new ArrayList<String>();
        l1.add("aa");
        l1.add("11");
        l1.add("name1");
        l1.add("bb");
        l1.add("cc");
    
        List<String> l2 = new ArrayList<String>();
        l2.add("aa");
        l2.add("11");
        l2.add("name2");
        l2.add("bb");
        l2.add("cc");
    
        List<String> l3 = new ArrayList<String>();
        l3.add("aa");
        l3.add("12");
        l3.add("name1");
        l3.add("bb");
        l3.add("cc");
    
        List<String> l4 = new ArrayList<String>();
        l4.add("aa");
        l4.add("12");
        l4.add("name2");
        l4.add("bb");
        l4.add("cc");
    
        list.add(l1);
        list.add(l2);
        list.add(l3);
        list.add(l4);
    
        List<List> result = new ArrayList<List>();
        List<Integer> hasVisited = new ArrayList<Integer>();
        for (int i = 0; i < list.size(); i++) {
            if(hasVisited.contains(i))
            {
                continue;
            }
            List tempi = list.get(i);
            List item = new ArrayList();
            List c = new ArrayList();
            item.add(tempi.get(0));
            item.add(tempi.get(1));
            c.add(tempi.get(2));
            for (int j = i + 1; j < list.size(); j++) {
                List tempj = list.get(j);
    
                if (tempi.get(0).equals(tempj.get(0))
                        && tempi.get(1).equals(tempj.get(1))) {
                    c.add(tempj.get(2));    
                    hasVisited.add(j);
                }
    
            }
            item.add(c);
            item.add(tempi.get(3));
            item.add(tempi.get(4));
    
            result.add(item);
        }
    
        System.out.println(result);
        System.out.println(hasVisited);
    
    }
    

    }

    [code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站