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条)

报告相同问题?

悬赏问题

  • ¥15 在不同的执行界面调用同一个页面
  • ¥20 基于51单片机的数字频率计
  • ¥50 M3T长焦相机如何标定以及正射影像拼接问题
  • ¥15 keepalived的虚拟VIP地址 ping -s 发包测试,只能通过1472字节以下的数据包(相关搜索:静态路由)
  • ¥20 关于#stm32#的问题:STM32串口发送问题,偶校验(even),发送5A 41 FB 20.烧录程序后发现串口助手读到的是5A 41 7B A0
  • ¥15 C++map释放不掉
  • ¥15 Mabatis查询数据
  • ¥15 想知道lingo目标函数中求和公式上标是变量情况如何求解
  • ¥15 关于E22-400T22S的LORA模块的通信问题
  • ¥15 求用二阶有源低通滤波将3khz方波转为正弦波的电路