Fli*_*rey 2 java double file-io java.util.scanner
所以我有一个文件可以读入,我知道如何设置数据.例如,我知道每个新行的第一个标记将是双重的.
我一直在使用扫描仪,只是使用scan.nextDouble()来读取double但是我被告知Double.parseDouble(scan.next())而不是加快从文件中读取数据的过程30秒降至约5秒.
scan.nextInt()与Integer.parseInt(scan.next())也是如此.
在我正在阅读的文件中,对于每行大约40,000行,它为int double int int.
那么是什么让它变得如此之快?
这都是因为scan.nextDouble()从以下Stream中找到最接近的Doublelike值.例如,它无法确定下一个字符串值是否为doublelike值
s ="abcde1234.5"scan.nextDouble(s)将为1234.5但Double.parseDouble(scan.next())将引发错误.
您将在源代码中找到更多详细信息.
next<Type>除了简单地读取下一个标记并调用适当的解析器之外,Scanner 方法还在做额外的工作.首先,他们检查令牌对该类型有效的正则表达式,然后按摩它以处理特定于语言环境的位(例如组分隔符,小数点分隔符等),然后最终将其传递给解析器.
如果您确定您的输入采用您描述的确切格式,并且您不需要考虑由来自不同区域设置等的输入引起的任何潜在差异,那么无论如何都要使用您被告知的优化.
| 归档时间: |
|
| 查看次数: |
2073 次 |
| 最近记录: |