将CharSequence解析为double而不创建String

时间:2018-02-10 08:10:42

标签: java

我需要用Java中的几亿行来解析几千兆字节的文本数据。

每一行都存储在CharBuffer(实现CharSequence)中,并且在固定位置包含多个整数和浮点数。

在第一个版本中,我使用String.substring​(int beginIndex, int endIndex)Integer.parseInt​(String s)以及Double.parseDouble​(String s)。然而这很慢。垃圾收集器占用了大量资源,因为每行多次创建了几十个临时String对象。

在我切换到Integer.parseInt​(CharSequence s, int beginIndex, int endIndex, int radix)后,我的表现有了很大提升。它可以直接从CharBuffer解析数字。

不幸的是我找不到这种浮点数的方法。

是否有人知道在CharSequence上提供浮动解析而不是String的方法或库?

1 个答案:

答案 0 :(得分:0)

由于我不确定它是否涵盖了您的所有期望,this library似乎可以提供您正在寻找的东西。

它提供以下方法:

double parseDouble(java.lang.CharSequence s, int start, int end) throws java.lang.NumberFormatException

如果它不是你想要的,抱歉花时间。