Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于每个字符串的计算值拆分arraylist_Java_String_Arraylist - Fatal编程技术网

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
}