这是一个list,其中每一行是一个object,

ID="1" CTIME="2011032414"
ID="3" CTIME="2011052414"  
ID="12" CTIME="2011041013" 
ID="2" CTIME="2011061013"  
ID="4" CTIME="2011041013"  
ID="22" CTIME="2011041013" 
ID="12" CTIME="2010041013"  
ID="1" CTIME="2011061013"  
ID="1" CTIME="2011041013" 
ID="3" CTIME="2010081023"  
ID="22" CTIME="2011041014"  
ID="4" CTIME="2010041014" 

那么如何根据ID来进行分组呢? 能否给一段代码解释???谢谢了 

解决方案 »

  1.   

    遍历,放到Map中,Map的value也是个List
      

  2.   

    实现一个
    Comparator 接口 里面根据ID 先比较  ID一样根据name 比较然后
    Collections。sort(List<T> list, Comparator<? super T> c) 
    结果会如你所愿:
    ID="1" CTIME="2011032414"
    ID="1" CTIME="2011041013" 
    ID="1" CTIME="2011061013" Id=2
    id3= ^^^^
      

  3.   

    我想问一下楼上,如果我用HashMap类,将ID定为键,将CTIME 定位值,我该怎样来写这个Comparator接口?
      

  4.   

    不需要什么接口啊Map m = new HashMap();遍历List()
    {
       String id=;//取出来ID
       String CTIME =;//取出CTIME 
       if(m.get(id)!=null)//判断ID是否已经存在了
       {
          ArrayList list = (ArrayList)m.get(id);//根据ID取出List
          list.add(CTIME );//放入CTIME 
       }else//如果没有,则创建新的List放进去
       {
             ArrayList list = new ArrayList();
             list.add(CTIME );
             m.put(id,list);//第一次以这个ID将List放到Map中
       }
    }遍历Map则可以得到各ID的List了
      

  5.   


    如果你是想使用map进行存储不同的分组 那么可以参照  8 楼的做法我的做法 不使用map ,我的只是排序完  依旧是一个list:package test;/**
     * 
     * @Description:
     * 
     * @author weisd Email:[email protected]
     * @date 2011-4-10 下午11:24:57
     * @version v1.0
     */
    public class TestVo {
    private String id;
    private String ctime; public TestVo() {
    }; public TestVo(String id, String ctime) {
    this.id = id;
    this.ctime = ctime;
    }; public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    } public String getCtime() {
    return ctime;
    } public void setCtime(String ctime) {
    this.ctime = ctime;
    } @Override
    public String toString() {
    if (id.length() == 1) {//只是为了好看
    return id + "    " + ctime;
    } else {
    return id + "   " + ctime;
    }
    }}package test;import java.util.Comparator;/**
     * 
     * @Description:
     * 
     * @author weisd Email:[email protected]
     * @date 2011-4-10 下午11:33:36
     * @version v1.0
     */
    public class UtilComparator implements Comparator { @Override
    public int compare(Object o1, Object o2) {
    TestVo v1 = (TestVo) o1;
    TestVo v2 = (TestVo) o2;
    String id1 = v1.getId();
    String ctime1 = v1.getCtime(); String id2 = v2.getId();
    String ctime2 = v2.getCtime(); // 这里就是 你的排序规则
    int i1 = id1.compareTo(id2);
    int c1 = ctime1.compareTo(ctime2);
    if (i1 == 0) {
    return c1;
    } else {
    return i1;
    }
    }}package test;import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;/**
     * 
     * @Description:
     * 
     * @author weisd Email:[email protected]
     * @date 2011-4-10 下午11:26:02
     * @version v1.0
     */
    public class TestComparator { /**
     * @param args
     */
    public static void main(String[] args) {
    TestComparator t = new TestComparator();
    List list = t.getInitList();
    Collections.sort(list, new UtilComparator()); for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
    } } public List getInitList() {
    String ID1 = "1";
    String CTIME1 = "2011032414";
    String ID2 = "3";
    String CTIME2 = "2011052414";
    String ID3 = "12";
    String CTIME3 = "2011041013";
    String ID4 = "2";
    String CTIME4 = "2011061013";
    String ID5 = "4";
    String CTIME5 = "2011041013";
    String ID6 = "22";
    String CTIME6 = "2011041013";
    String ID7 = "12";
    String CTIME7 = "2010041013";
    String ID8 = "1";
    String CTIME8 = "2011061013";
    String ID9 = "1";
    String CTIME9 = "2011041013";
    String ID10 = "3";
    String CTIME10 = "2010081023";
    String ID11 = "22";
    String CTIME11 = "2011041014";
    String ID12 = "4";
    String CTIME12 = "2010041014";
    TestVo vo1 = new TestVo(ID1, CTIME1);
    TestVo vo2 = new TestVo(ID2, CTIME2);
    TestVo vo3 = new TestVo(ID3, CTIME3);
    TestVo vo4 = new TestVo(ID4, CTIME4);
    TestVo vo5 = new TestVo(ID5, CTIME5);
    TestVo vo6 = new TestVo(ID6, CTIME6);
    TestVo vo7 = new TestVo(ID7, CTIME7);
    TestVo vo8 = new TestVo(ID8, CTIME8);
    TestVo vo9 = new TestVo(ID9, CTIME9);
    TestVo vo10 = new TestVo(ID10, CTIME10);
    TestVo vo11 = new TestVo(ID11, CTIME11);
    TestVo vo12 = new TestVo(ID12, CTIME12); List list = new ArrayList();
    list.add(vo1);
    list.add(vo2);
    list.add(vo3);
    list.add(vo4);
    list.add(vo5);
    list.add(vo6);
    list.add(vo7);
    list.add(vo8);
    list.add(vo9);
    list.add(vo10);
    list.add(vo11);
    list.add(vo12); return list;
    }
    }结果:
    1    2011032414
    1    2011041013
    1    2011061013
    12   2010041013
    12   2011041013
    2    2011061013
    22   2011041013
    22   2011041014
    3    2010081023
    3    2011052414
    4    2010041014
    4    2011041013可以根据需要设置比较规则: // 这里就是 你的排序规则
    int i1 = id1.compareTo(id2);
    int c1 = ctime1.compareTo(ctime2);
    if (i1 == 0) {
    return c1;
    } else {
    return i1;
    }我的结果只是在一个list中,并为分组
      

  6.   

    那么我如果再把分组后的结果再放到一个list中呢
      

  7.   

    这个....要看你怎么放回去了,对这个新的list有什么要求?你又要list,又要id,那么需要一个新的类来封装了.class Temp
    {
       String id;
       ArrayList list;
       public Temp()
       {
       }
       public Temp(String id,ArrayList list)
       {
         this.id = id;this.list = list;
       }
    //对应的get/set方法
    }Set set = map.keySet();ArrayList list = new ArrayList();
    遍历set()
    {
        String key=;//得到set中的元素,实际就是id
        list.add(new Temp(key,map.get(key)));}