Java 如何在android中每周统计日期数组列表中的条目
我有: 我的目标是从列表中的第一个日期开始每周(7天)统计条目。有什么办法吗Java 如何在android中每周统计日期数组列表中的条目,java,android,arraylist,Java,Android,Arraylist,我有: 我的目标是从列表中的第一个日期开始每周(7天)统计条目。有什么办法吗 我就是找不到实现这样一个目标的计划。如何移动?一个简单的方法是首先对列表进行排序,然后迭代项目并跟踪每周计数 2016-05-01, 2016-05-01, 2016-05-01, 2016-05-02, 2016-05-03, 2016-05-04, 2016-05-04, 2016-05-04, 2016-05-01, ... ETC long WEEK_IN_MILLIS=7*24*60*60*1000; 列出
我就是找不到实现这样一个目标的计划。如何移动?一个简单的方法是首先对列表进行排序,然后迭代项目并跟踪每周计数
2016-05-01, 2016-05-01, 2016-05-01, 2016-05-02, 2016-05-03, 2016-05-04, 2016-05-04, 2016-05-04, 2016-05-01, ... ETC
long WEEK_IN_MILLIS=7*24*60*60*1000;
列出日期=。。。
集合。排序(日期);
int weekNumber=1;
int计数器=0;
Date weekStart=null;
(日期:日期){
if(weekStart==null){
weekStart=日期;
}
否则{
长间隔=date.getTime()-weekStart.getTime();
如果(间隔>周,单位:毫秒){
System.out.printf(“周%s中有%s个日期”,周号,计数器);
weekNumber++;
weekStart=日期;
计数器=0;
}
}
计数器++;
}
编辑:将
系统中的计数器-1
更改为计数器
。我们的.printf
语句告诉我您已经考虑了解决方案,如果以固定的日期(如星期一)划分周数,我很乐意提供帮助?或者我们应该从列表中最早的日期开始计算7天的周期吗?解析为某种日期类型(日历)。。。按年度分组,然后按年度周分组。。。计算组中的Meber数。。。似乎是一个基本的编程练习重点是我找不到一个开始的方法,我不得不将这个列表字符串更改为日期列表,但我就是找不到下一步。。我想我可以根据周数将大列表划分为子列表,然后为每个列表获取list.size()。。但问题是我不知道我需要多少子列表,因为日期范围总是不同的!我还想,如果我可以做一个循环,将第一个条目放入日历中,然后向前移动7天。。但我不知道如何在这一点上划分列表。@Adrian Koster,不,我只需要从最长的一个开始算起7天。非常感谢Adrian,这实现了我的目标,我只需将其更改为间隔>=周(单位:毫秒)。。不包括下周的第一天。非常感谢再看一眼。我认为应该保留>但您应该使用计数器
而不是计数器-1
。
2016-05-01, 2016-05-01, 2016-05-01, 2016-05-02, 2016-05-03, 2016-05-04, 2016-05-04, 2016-05-04, 2016-05-01, ... ETC
long WEEK_IN_MILLIS = 7 * 24 * 60 * 60 * 1000;
List<Date> dates = ...
Collections.sort(dates);
int weekNumber = 1;
int counter = 0;
Date weekStart = null;
for(Date date : dates) {
if (weekStart == null) {
weekStart = date;
}
else {
long interval = date.getTime() - weekStart.getTime();
if (interval > WEEK_IN_MILLIS) {
System.out.printf("Week %s has %s dates in it", weekNumber, counter);
weekNumber++;
weekStart = date;
counter = 0;
}
}
counter++;
}