在 Java 中将刻度转换为分钟的最佳方法(金融)
Best way to convert ticks to minuts in Java (finance)
我有一个庞大的数据库,其中每天包含一个具有以下格式的文本文件:
"HH:mm:ss xxxx.xx"
每个交易日的几乎每一秒,所以我在每个文本文件中都有数千行。
我正在寻找将这些行转换为 HashMap 的最佳方法,其中每个键代表交易日的新分钟。
例如,我想写几行:
00:08:48 9819,9
00:09:10 9818,7
00:09:44 9819,9
00:09:51 9820,9
00:10:07 9822,1
在 HashMap 中看起来像这样:
myHashMap.put("00:09:00", 9818.7)
myHashMap.put("00:10:00", 9822.1)
PS :我知道“00:09:00”不是一个好的日期格式,它只是为了举例!
如果您正在使用 java-8 - Files#lines
does a great job at that. The LocalTime
class 表示一天中的时间。
警告:如果要在内存中创建太多对象,可能会抛出 OutOfMemoryError。
Map<LocalTime, Double> map = Files.lines(Paths.get("D:\data.txt"))
.map(x -> x.split(" "))
.collect(Collectors.toMap(
x -> LocalTime.parse(x[0]),
x -> Double.valueOf(x[1])));
对于特定的double
格式,您可以使用以下
(Double)NumberFormat.getInstance(Locale.GERMANY).parse(x[1]))
货币
由于数据似乎是货币数据,BigDecimal
可能比 Double
更好。
Map<LocalTime, BigDecimal> map = Files.lines(Paths.get("D:\data.txt"))
.map(x -> x.split(" "))
.collect(Collectors.toMap(
x -> LocalTime.parse(x[0]),
x -> new BigDecimal(x[1])));
我有一个庞大的数据库,其中每天包含一个具有以下格式的文本文件: "HH:mm:ss xxxx.xx" 每个交易日的几乎每一秒,所以我在每个文本文件中都有数千行。 我正在寻找将这些行转换为 HashMap 的最佳方法,其中每个键代表交易日的新分钟。
例如,我想写几行:
00:08:48 9819,9
00:09:10 9818,7
00:09:44 9819,9
00:09:51 9820,9
00:10:07 9822,1
在 HashMap 中看起来像这样:
myHashMap.put("00:09:00", 9818.7)
myHashMap.put("00:10:00", 9822.1)
PS :我知道“00:09:00”不是一个好的日期格式,它只是为了举例!
如果您正在使用 java-8 - Files#lines
does a great job at that. The LocalTime
class 表示一天中的时间。
警告:如果要在内存中创建太多对象,可能会抛出 OutOfMemoryError。
Map<LocalTime, Double> map = Files.lines(Paths.get("D:\data.txt"))
.map(x -> x.split(" "))
.collect(Collectors.toMap(
x -> LocalTime.parse(x[0]),
x -> Double.valueOf(x[1])));
对于特定的double
格式,您可以使用以下
(Double)NumberFormat.getInstance(Locale.GERMANY).parse(x[1]))
货币
由于数据似乎是货币数据,BigDecimal
可能比 Double
更好。
Map<LocalTime, BigDecimal> map = Files.lines(Paths.get("D:\data.txt"))
.map(x -> x.split(" "))
.collect(Collectors.toMap(
x -> LocalTime.parse(x[0]),
x -> new BigDecimal(x[1])));