1

我目前有一个ArrayList充满格式的日期,2012-06-19我正在尝试将它们全部添加到Dates 数组中。

这是我失败的代码部分,

    listIterator = dateValues.listIterator();

    Date [] dates = new Date[dateValues.size()];
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    int i = 0;
    try{
        while(listIterator.hasNext())
        {
            //System.out.println(listIterator.next().toString());
            dates[i] =  dateFormat.parse(listIterator.next().toString());
            i++;

        }

        for(i = 0; i < dates.length;i++)
        {
            System.out.println(dates[i]);
        }
    }
    catch(Exception e){e.printStackTrace()};
}

线

//System.out.println(listIterator.next().toString());

将打印出 ArrayList 中的每个日期。输出看起来像,

2007-09-07
2007-09-07
2007-10-05
2007-10-05
2007-10-05
2007-10-05
2007-10-05

但我的dateFormat行从不向dates[]. 任何帮助,将不胜感激。

不,这不是家庭作业。

4

3 回答 3

2

试试这个:

List<String> dateValues = new ArrayList<String>();
Date[] dates = new Date[dateValues.size()];
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
int i = 0;
for (String dateValue : dateValues) {
    dates[i++] = dateFormat.parse(dateValue);
}

“代码越少越好”,所以使用语言(foreach 循环等)来保持代码小而干净(如上面的代码)。

在您发表评论之前请注意:“代码越少越好”,只要它保持可读性。

于 2012-05-23T10:06:41.037 回答
1

如果该行:

//System.out.println(listIterator.next().toString()); 

is uncommentednext()在一次迭代中被调用两次,最终将导致NoSuchElementException被抛出。这意味着后续for循环将不会被执行。存储结果next()

while(listIterator.hasNext())
{
    String s = listIterator.next().toString();
    System.out.println(s);
    dates[i] = dateFormat.parse(s);
    i++;
}
于 2012-05-23T10:16:40.277 回答
0

@Tom Celic 的解决方案对我有用。

List<String> dateValues = new ArrayList<String>();
    dateValues.add("2012-09-08");
    dateValues.add("2011-09-08");
    Date[] dates = new Date[dateValues.size()];
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    int i = 0;
    for (String dateValue : dateValues) {
        dates[i++] = dateFormat.parse(dateValue);
    }
    System.out.println(dates.length);
    System.out.println(dates[0]);
    System.out.println(dates[1]);

它打印:

    2
Sat Sep 08 00:00:00 IST 2012
Thu Sep 08 00:00:00 IST 2011
于 2012-05-23T11:31:50.643 回答