执行解析日期并放入 TreeMap 的快速方法
Quick way to execute parsing dates and put in a TreeMap
我必须阅读一个包含大约 40.000 个带有日期和值的条目的大量 csv。我做到了:
TreeMap<LocalDateTime,Double> fi = new TreeMap<LocalDateTime,Double>();
CSVReader reader = new CSVReader(new FileReader(path),';');
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
fi.put(LocalDateTime.parse (nextLine[0],DateTimeFormatter.ofPattern ("uuuu-MM-dd HH:mm")),Double.valueOf(nextLine[1]));
}
reader.close();
从文件中读取速度非常快,但解析为 LocalDateTime
非常慢,大约需要 9 分钟才能完成。有没有更快的想法?
我的 CSV 文件中的一些示例行:
2015-01-01 15:30;3
2015-01-01 15:45;5
2015-01-01 16:00;5
2015-01-01 16:15;3
2015-01-01 16:30;4
2015-01-01 16:45;5
2015-01-01 17:00;4
2015-01-01 17:15;3
2015-01-01 17:30;5
2015-01-01 17:45;4
2015-01-01 18:00;4
尝试重用格式化程序模式,而不是在循环中不断实例化。你这样做的方式意味着每次迭代都必须解析模式:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("uuuu-MM-dd HH:mm");
while ((nextLine = reader.readNext()) != null) {
fi.put(LocalDateTime.parse(nextLine[0],formatter),Double.valueOf(nextLine[1]));
}
我必须阅读一个包含大约 40.000 个带有日期和值的条目的大量 csv。我做到了:
TreeMap<LocalDateTime,Double> fi = new TreeMap<LocalDateTime,Double>();
CSVReader reader = new CSVReader(new FileReader(path),';');
String [] nextLine;
while ((nextLine = reader.readNext()) != null) {
fi.put(LocalDateTime.parse (nextLine[0],DateTimeFormatter.ofPattern ("uuuu-MM-dd HH:mm")),Double.valueOf(nextLine[1]));
}
reader.close();
从文件中读取速度非常快,但解析为 LocalDateTime
非常慢,大约需要 9 分钟才能完成。有没有更快的想法?
我的 CSV 文件中的一些示例行:
2015-01-01 15:30;3
2015-01-01 15:45;5
2015-01-01 16:00;5
2015-01-01 16:15;3
2015-01-01 16:30;4
2015-01-01 16:45;5
2015-01-01 17:00;4
2015-01-01 17:15;3
2015-01-01 17:30;5
2015-01-01 17:45;4
2015-01-01 18:00;4
尝试重用格式化程序模式,而不是在循环中不断实例化。你这样做的方式意味着每次迭代都必须解析模式:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("uuuu-MM-dd HH:mm");
while ((nextLine = reader.readNext()) != null) {
fi.put(LocalDateTime.parse(nextLine[0],formatter),Double.valueOf(nextLine[1]));
}