当前位置:编程学习 > JAVA >>

关于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实现了,可能逻辑上有些复杂,哪里看不懂再问我。


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;
}
}
--------------------编程问答--------------------  Week week6 = new Week("6","星期二");
这个忘了添加到list里了,所以输出会少个6。
你也可以加上list.add(week6); --------------------编程问答-------------------- 你可以用可重复值的HASH表,GOOGLE有类库,叫guava,使用Multimap这个接口类.
你用开始结束时间做hash键. --------------------编程问答-------------------- 如果是oracle的话groupby后有个函数可以实现 wm_concat --------------------编程问答-------------------- 哎哟,你这个实现好复杂,建议去好好看看数据结构。



---------------------
http://www.mowker.com/qkdq.htm
--------------------编程问答--------------------
引用 8 楼 amowker 的回复:
哎哟,你这个实现好复杂,建议去好好看看数据结构。



---------------------
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 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,