【问题标题】:Split arraylist based on calculated value of each string根据每个字符串的计算值拆分数组列表
【发布时间】:2015-10-15 06:00:56
【问题描述】:

我有一个 ArrayList 的字符串,在迭代时,for(int i =0; i < arrayList.size(); i++)。每个字符串都取自 .csv 文件,因此它们由逗号分隔。其中一列有一个unix时间戳,所以一串数据看起来像这样(我删掉了不相关的值):

1442759243, value, value, value

所以,当我迭代时,我会提取 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)会随着列表的进行缓慢增加),会出现下一个 String date 与前一个不同的值. 现在,在每次字符串迭代中,我都设置了一个递增的计数器。当日期更改时,我想要的是计数器重置并重新开始计数。我的问题是,我该如何“拆分”arraylist,以便我可以重置计数器以重新开始计数?

【问题讨论】:

    标签: java string arraylist


    【解决方案1】:

    只保留前一个日期,并在每次迭代时将当前日期与前一个日期进行比较:

    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
    }
    

    【讨论】:

    • 你在这里遗漏了一些东西 ;-)
    • @laune arg,是的。太尴尬了:-(
    【解决方案2】:

    您的for 循环错误。它不会编译。

    您通过调用split(",") 来拆分数组列表中的值。

    getDate() 已弃用。使用Calendar

    要重置计数器,记住之前的值并在它改变时重置。

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多