我现在在一个list中存了19周的周次、星期、开始结束时间,我现在想比较星期和结束时间,把不同周次的相同星期和时间的合并在一起,但想保留周次,应该怎么比较合并实现我现在能实现的是将相同的时间找出,但周次就没办法放了,只能放一周,就没办法知道第几周和第几周时间相同。比如一共有5周,
周次      星期          开始              结束
 1        星期三        3:00              4:00
 2        星期三        3:00              4:00
 3        星期四        9:00               11:00
 4        星期三        3:00              4:00
 5        星期四        9:00              11:00我现在想变为
周次      星期          开始              结束
1,2,4     星期三        3:00              4:00
3,5       星期四        9:00              11:00该怎么实现

解决方案 »

  1.   

    个人的笨方法:循环List,将星期、时间作为key,周次作为value放入HashMap,然后循环的时候去HashMap找是否存在星期、时间,存在就取出value拼上当前的周次再放进去。最后再循环HashMap组合起来放进List中。
      

  2.   

    没用过hashMap,不太清楚怎么用
      

  3.   

    帮你用list实现了,可能逻辑上有些复杂,哪里看不懂再问我。
    import java.util.ArrayList;
    import java.util.List;public class Test { public static void main(String[] args) {
    Week week1 = new Week("1","星期一");
    Week week2 = new Week("2","星期一");
    Week week3 = new Week("3","星期一");
    Week week4 = new Week("4","星期二");
    Week week5 = new Week("5","星期二");
    Week week6 = new Week("6","星期二");
    List<Week> list = new ArrayList<Week>();
    list.add(week1);
    list.add(week2);
    list.add(week3);
    list.add(week4);
    list.add(week5);

    List<Week> weekList = new ArrayList<Week>();
    for (int i = 0; i < list.size(); i++) {
    Week w1 = list.get(i);
    weekList.add(w1);
    for (int j = 0; j < weekList.size(); j++) {
    if(i<list.size()-1){
    Week w2 = list.get(i+1);
    Week w3 = weekList.get(j);
    if(w2.getDay().equals(w3.getDay())){
    w2.setId(w3.getId()+","+w2.getId());
    weekList.remove(w1);
    }
    }
    }
    }

    System.out.println(weekList);
    }
    }实体类
    public class Week {
    String id;
    String day;

    public Week(String id,String day) {
    this.id = id;
    this.day = day;
    }

    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    public String getDay() {
    return day;
    }
    public void setDay(String day) {
    this.day = day;
    }

    @Override
    public String toString() {
    // TODO Auto-generated method stub
    return this.id + " " + this.day;
    }
    }
      

  4.   

     Week week6 = new Week("6","星期二");
    这个忘了添加到list里了,所以输出会少个6。
    你也可以加上list.add(week6);
      

  5.   

    你可以用可重复值的HASH表,GOOGLE有类库,叫guava,使用Multimap这个接口类.
    你用开始结束时间做hash键.
      

  6.   

    如果是oracle的话groupby后有个函数可以实现 wm_concat
      

  7.   

    哎哟,你这个实现好复杂,建议去好好看看数据结构。---------------------
    http://www.mowker.com/qkdq.htm
      

  8.   

    sql语句:select wmsys.wm_concat(t.num),t.weekday,t.begin,t.end  from week t group by t.weekday,t.begin,t.end;