Java 基于每个字符串的计算值拆分arraylist
我有一个字符串的Java 基于每个字符串的计算值拆分arraylist,java,string,arraylist,Java,String,Arraylist,我有一个字符串的ArrayList,在迭代时,用于(int I=0;I
ArrayList
,在迭代时,用于(int I=0;I
。每个字符串都取自.csv文件,因此它们用逗号分隔。其中一列有unix时间戳,因此一个数据字符串看起来像这样(我删掉了不相关的值):
因此,在迭代过程中,我提取unix时间戳以查找特定的日期
java.util.Date time = new java.util.Date((long) timeStamp * 1000);
// gives a result of Tue Sep 15 22:38:04 SGT 2015
String date = String.valueOf(time.getDate());;
// gives the result of "15"
随着迭代的进行(列表已按时间排序,因此数字(例如15)随着列表的进行而缓慢增加),将出现下一个字符串日期
与上一个不同的值。
现在,在每次字符串迭代中,我都设置了一个递增的计数器。当日期更改时,我想要的是计数器重置并再次开始计数。我的问题是,如何“拆分”arraylist,以便重新设置计数器以重新开始计数?只需保留上一个日期,并在每次迭代时将当前日期与上一个日期进行比较:
int counter = 0;
String prevDate = "";
for (int i = 0; arrayList.size(); i++) {
long timestamp = Long.parseLong(arrayList.get(i));
Date time = new Date(timeStamp * 1000L);
String date = String.valueOf(time.getDate());
if (date.equals(prevDate)) {
++counter;
} else {
counter = 1;
prevDate = date;
}
// Do something useful with the counter
}
您的
for
循环错误。它不会编译
通过调用split(“,”
,可以拆分arraylist中的值
getDate()
已弃用。使用日历
要重置计数器,请记住以前的值,并在其更改时重置
Calendar cal = Calendar.getInstance();
int counter = 0, prevDay = 0;
for (int i = 0; i < arrayList.size(); i++,counter++) {
String[] values = arrayList.get(i).split(",");
cal.setTimeInMillis(Long.parseLong(values[0]) * 1000);
int day = cal.get(Calendar.DAY_OF_MONTH);
if (day != prevDay) {
counter = 0;
prevDay = day;
}
// code here
}
Calendar cal=Calendar.getInstance();
int计数器=0,prevDay=0;
对于(int i=0;i
您在这里遗漏了一点;-)@劳恩·阿格,是的。这很尴尬:-(
Calendar cal = Calendar.getInstance();
int counter = 0, prevDay = 0;
for (int i = 0; i < arrayList.size(); i++,counter++) {
String[] values = arrayList.get(i).split(",");
cal.setTimeInMillis(Long.parseLong(values[0]) * 1000);
int day = cal.get(Calendar.DAY_OF_MONTH);
if (day != prevDay) {
counter = 0;
prevDay = day;
}
// code here
}