一个泛型list集合 里面有很多数据其中数据的一个列是ID 我需要根据这个ID来分类 再把分好的类分别放到map对应的里面,或者是一个新的list里面也可以(这个list也需要是泛型的),id的类型有几个 map里面就有多少个key value里面是包含一个和这个key的类型一样的数据,这个ID不是固定的,是根据需求的不同而变化的!(一共有90多个类型),这么说吧!  
String leixing="3,7,6,9,12";
List<TyLogTypeReport> list=new ArrayList<TyLogTypeReport>();
这个list是装有这5个类型的说有数据,而这个list的数据是这样的
com.log.model.TyZcsLogReport@1ed2bbd, 
com.log.model.TyZcsLogReport@1d2bb9f,我需要对这5个类型分类 根据这5个类型生成5个装有对应的类型数据的listA,listB,listc,listd,liste。
小弟我没有做过这样的处理!纠结了好久 ,还是不成!所以不得已才在这里发帖!
 真心麻烦各位大侠帮小弟我指点指点下!!!真心感谢了!

解决方案 »

  1.   

    返回一个Map<Integer,List<TyLogTypeReport>> map
    Integer指的是id,
    List<TyLogTypeReport>分类后的id所对应的list。对原先的List<TyLogTypeReport> list进行迭代,for (TyLogTypeReport report : List<TyLogTypeReport>) {    if (!map.containsKey(report.getId())) {
            // 往map里put该id以及TyLogTypeReport
        } else {
            // 把map里的该id对应的list再add
        }
    }
      

  2.   

    1楼的大侠!!!你后面的那个for循环和if判断我的明白了!但是你所说的“List<TyLogTypeReport>分类后的id所对应的list。对原先的List<TyLogTypeReport> list进行迭代,”是不是下面的循环就可以实现的啊???
    好像还要一个操作吧!小弟我不才!麻烦大侠帮我细化下Map<Integer,List<TyZcsLogReport>> maps=new HashMap<Integer, List<TyZcsLogReport>>();
    String id=null;
    // for (TyZcsLogReport re:list ) {
    // if (list.size()>0 || null!=list) {
    //
    // re.getKindDesc();
    // id=re.getKindId().toString();
    // if (id.equals(re.getKindId())) {
    // List<TyZcsLogReport> li=new ArrayList<TyZcsLogReport>();
    // for (TyZcsLogReport obj:list) {
    // TyZcsLogReport report=new TyZcsLogReport();
    // report.setKindId(obj.getKindId());
    // report.setKindDesc(obj.getKindDesc());
    // report.setTotal(obj.getTotal());
    // report.setLogDate(obj.getLogDate());
    // li.add(report);
    // li.toArray();
    // System.out.println("提取测试数据li:"+maps.put(id, li));
    // }
    //
    // }
    //
    // maps.put(id, list);
    //// System.out.println("LIchangdu"+li);
    //
    // }else{
    // System.out.println("报错了!");
    // }
    // }
      

  3.   

    或者直接根据类型ID的多少!直接自动生成几个泛型list也可以!不是一定要放到Map里面的!我可以直接对这些对应的List进行出来的
      

  4.   

    只要一层for循环就可以了啊。for (TyLogTypeReport report : list) {  if (!map.containsKey(report.getKindId())) {    // 往map里put该id以及TyLogTypeReport
        List<TyZcsLogReport> li=new ArrayList<TyZcsLogReport>();
        li.add(report);
        maps.put(report.getKindId(), li);  } else {    // 把map里的该id对应的list再add
        List<TyZcsLogReport> li = maps.get(report.getKindId());
        li.add(report);
        maps.put(report.getKindId(), li);  }
    }
    return maps;逻辑大概就是这样
      

  5.   

    顶4楼,感觉他的队。
    我改良了一下他for循环中的内容:for(TyLogTypeReport report : list){
    map.put(report.getId(),
    map.containsKey(report.getId()) ? 
    ((List) map.get(report.getId())).add(report) :
    new ArrayList<TyLogTypeReport>().add(report));
    }哈哈。
      

  6.   

    用这个分类是不是会把原来的数据打乱啊!
    这是没分类前的!
    提取测试数据:2012-06-06 00:00:00.0
    提取测试数据:2012-06-06 00:00:00.0
    提取测试数据:2012-06-07 00:00:00.0
    提取测试数据:2012-06-07 00:00:00.0
    提取测试数据:2012-06-08 00:00:00.0
    提取测试数据:2012-06-08 00:00:00.0
    提取测试数据:2012-06-09 00:00:00.0
    提取测试数据:2012-06-09 00:00:00.0
    提取测试数据:2012-06-10 00:00:00.0
    提取测试数据:2012-06-10 00:00:00.0
    提取测试数据:2012-06-11 00:00:00.0
    提取测试数据:2012-06-11 00:00:00.0
    提取测试数据:2012-06-12 00:00:00.0
    提取测试数据:2012-06-12 00:00:00.0
    提取测试数据:2012-06-13 00:00:00.0
    提取测试数据:2012-06-13 00:00:00.0
    提取测试数据:2012-06-14 00:00:00.0
    提取测试数据:2012-06-14 00:00:00.0
    提取测试数据:2012-06-15 00:00:00.0
    提取测试数据:2012-06-15 00:00:00.0
    提取测试数据:2012-06-16 00:00:00.0
    提取测试数据:2012-06-16 00:00:00.0
    提取测试数据:2012-06-17 00:00:00.0
    提取测试数据:2012-06-17 00:00:00.0
    提取测试数据:2012-06-18 00:00:00.0
    提取测试数据:2012-06-18 00:00:00.0
    提取测试数据:2012-06-19 00:00:00.0
    提取测试数据:2012-06-19 00:00:00.0
    提取测试数据:2012-06-20 00:00:00.0
    提取测试数据:2012-06-20 00:00:00.0
    提取测试数据:2012-06-21 00:00:00.0
    提取测试数据:2012-06-21 00:00:00.0
    提取测试数据:2012-06-22 00:00:00.0
    提取测试数据:2012-06-22 00:00:00.0
    提取测试数据:2012-06-23 00:00:00.0
    提取测试数据:2012-06-23 00:00:00.0
    提取测试数据:2012-06-24 00:00:00.0
    提取测试数据:2012-06-24 00:00:00.0
    提取测试数据:2012-06-25 00:00:00.0
    提取测试数据:2012-06-25 00:00:00.0
    提取测试数据:2012-06-26 00:00:00.0
    提取测试数据:2012-06-26 00:00:00.0
    提取测试数据:2012-06-27 00:00:00.0
    提取测试数据:2012-06-27 00:00:00.0
    提取测试数据:2012-06-28 00:00:00.0
    提取测试数据:2012-06-28 00:00:00.0
    提取测试数据:2012-06-29 00:00:00.0
    提取测试数据:2012-06-29 00:00:00.0
    提取测试数据:2012-06-30 00:00:00.0
    提取测试数据:2012-06-30 00:00:00.0
    ####这是分类后的时间顺序!{name:'Launcher下载成功',data:[{name:'2012-06-18',y:13124},{name:'2012-06-19',y:12728},{name:'2012-06-06',y:14},{name:'2012-06-24',y:15554},{name:'2012-06-23',y:19906},{name:'2012-06-22',y:25549},{name:'2012-06-21',y:67590},{name:'2012-06-28',y:10933},{name:'2012-06-27',y:11406},{name:'2012-06-26',y:12443},{name:'2012-06-25',y:13369},{name:'2012-06-20',y:11598},{name:'2012-06-30',y:19959},{name:'2012-06-07',y:26},{name:'2012-06-08',y:23},{name:'2012-06-09',y:52742},{name:'2012-06-11',y:9492},{name:'2012-06-10',y:13543},{name:'2012-06-13',y:5443},{name:'2012-06-12',y:7039},{name:'2012-06-15',y:8325},{name:'2012-06-14',y:4941},{name:'2012-06-17',y:15384},{name:'2012-06-16',y:14632},{name:'2012-06-29',y:14568}]},{name:'弹出选区服提醒',data:[{name:'2012-06-18',y:8218},{name:'2012-06-19',y:8455},{name:'2012-06-06',y:5574},{name:'2012-06-24',y:18360},{name:'2012-06-23',y:21444},{name:'2012-06-22',y:20047},{name:'2012-06-21',y:17911},{name:'2012-06-28',y:15688},{name:'2012-06-27',y:16255},{name:'2012-06-26',y:16095},{name:'2012-06-25',y:16060},{name:'2012-06-20',y:7940},{name:'2012-06-30',y:30233},{name:'2012-06-07',y:4934},{name:'2012-06-08',y:4631},{name:'2012-06-09',y:4226},{name:'2012-06-11',y:3108},{name:'2012-06-10',y:3655},{name:'2012-06-13',y:2744},{name:'2012-06-12',y:3264},{name:'2012-06-15',y:4530},{name:'2012-06-14',y:2612},{name:'2012-06-17',y:8835},{name:'2012-06-16',y:7468},{name:'2012-06-29',y:22425}]}
    顺序完全被打乱了!!!麻烦4楼 5楼的大侠帮我看看是什么问题!