解决方案 »
- IPv6什么时候开始应用?技术难点是什么?
- Document 如何工作的???
- Java JFrame的问题。。。
- OJDBC问题。高人指点
- NIO的实现问题
- 关于java中方法和变量的访问控制
- 请问一下各位关于ServerSocket和jsp页面的问题,急~~~
- 200分求 Together for eclipse 6.2 的注册机
- 有关抽象与接口的问题?
- 面试题:求高效代码,将十六进制转换为十进制数
- 有关《java核心开发技术从入门到精通》的问题:atan是什么意思啊...(答完追加高分)
- JAVA 官方网站,找不到 JDK 6 的API文档下载地址?给我把地址发上来,谢谢、。要官方地址。
上次是要求dateT < x <= dateT
这次是要求05:00 <= time < 05:10对吗?
你可以注意下,修改的地方都跟gapid的计算有关
主要原理就是取从1970年至今的毫秒数getTime(),除以时间间隔的毫秒数mins * 60 * 1000,得到gapid
gapid相同的记录合并,由于上次跟这次的需求稍有差别,所以gapid也跟着稍作调整就行了
/* 参数
* list ---- 待合并数组
* mins ---- 待合并分钟数
* 返回
* 合并后数组
*/
public static List<ClassBean> combine(List<ClassBean> list, int mins) {
List<ClassBean> newlist = new ArrayList<ClassBean>();
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
ClassBean cb,lastcb;
long gap = mins * 60 * 1000, gapid=-1;
for (int i = 0; i < list.size(); i++) {
cb = list.get(i);
if (newlist.size() == 0) {
//gapid = (df.parse(cb.getDateT()).getTime()-1)/gap;
gapid = (df.parse(cb.getDateT()).getTime())/gap;
//cb.setDateT(df.format(new Date((gapid+1)*gap)));
cb.setDateT(df.format(new Date(gapid*gap)));
newlist.add(cb);
} else {
lastcb = newlist.get(newlist.size()-1);
//if (lastcb.getName().equals(cb.getName()) && (df.parse(cb.getDateT()).getTime()-1)/gap == gapid) {
if (lastcb.getName().equals(cb.getName()) && (df.parse(cb.getDateT()).getTime())/gap == gapid) {
lastcb.setNum(lastcb.getNum() + cb.getNum());
} else {
//gapid = (df.parse(cb.getDateT()).getTime()-1)/gap;
//cb.setDateT(df.format(new Date((gapid+1)*gap)));
gapid = (df.parse(cb.getDateT()).getTime())/gap;
cb.setDateT(df.format(new Date(gapid*gap)));
newlist.add(cb);
}
}
}
} catch (Exception e) { System.out.println(e); }
return newlist;
}