执行解析日期并放入 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]));
}