我目前有一个ArrayList
填充了2012-06-19
格式的日期,我正在尝试将它们全部添加到Date
s的数组中。
这是我失败的代码部分,
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[]
添加任何值。任何帮助,将不胜感激。
不,这不是功课。
答案 0 :(得分: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循环等)来保持代码的小巧和干净(如上面的代码所示)。
在你发表评论之前请注意:“代码越少越好”,只要它仍然可读。
答案 1 :(得分:1)
如果该行:
//System.out.println(listIterator.next().toString());
取消注释next()
在一次迭代中被调用两次,最终会导致NoSuchElementException
被抛出。意味着不会执行后续的for
循环。存储next()
的结果:
while(listIterator.hasNext())
{
String s = listIterator.next().toString();
System.out.println(s);
dates[i] = dateFormat.parse(s);
i++;
}
答案 2 :(得分: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