关于list的迭代输出问题
我现在在一个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,2,4放在一起显示出来 --------------------编程问答-------------------- 个人的笨方法:循环List,将星期、时间作为key,周次作为value放入HashMap,然后循环的时候去HashMap找是否存在星期、时间,存在就取出value拼上当前的周次再放进去。最后再循环HashMap组合起来放进List中。 --------------------编程问答-------------------- 没用过hashMap,不太清楚怎么用
--------------------编程问答-------------------- 帮你用list实现了,可能逻辑上有些复杂,哪里看不懂再问我。
--------------------编程问答-------------------- Week week6 = new Week("6","星期二");
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;
}
}
这个忘了添加到list里了,所以输出会少个6。
你也可以加上list.add(week6); --------------------编程问答-------------------- 你可以用可重复值的HASH表,GOOGLE有类库,叫guava,使用Multimap这个接口类.
你用开始结束时间做hash键. --------------------编程问答-------------------- 如果是oracle的话groupby后有个函数可以实现 wm_concat --------------------编程问答-------------------- 哎哟,你这个实现好复杂,建议去好好看看数据结构。
---------------------
http://www.mowker.com/qkdq.htm
--------------------编程问答--------------------
那麻烦您别光用嘴说,您实现个简单的我看看好么???
要么请让我闭嘴,要么请自己闭嘴。 --------------------编程问答-------------------- 建议放在数据库中,分组查询就可以实现了;
或是遍历数组,4楼说的很详细 --------------------编程问答-------------------- sql语句:
select wmsys.wm_concat(t.num),t.weekday,t.begin,t.end from week t group by t.weekday,t.begin,t.end;
补充:Java , Web 开发