能有多快?
在一些算法竞赛中,可能会有一些题目数据量非常大,如果使用 Java 来编写代码,如何才能读取的更快呢?
正好在 SPOJ 这个平台上有一道很合适的题目:SPOJ.com - Problem INTEST
使用 java.util.Scanner
1 | import java.util.Scanner; |
使用 java.io.BufferedReader
使用 BufferedReader
配合 Integer.parseInt()
、Double.parseDouble()
等方法。
1 | import java.io.BufferedReader; |
进阶版:自定义 parse
1 | import java.io.DataInputStream; |
速度对比
原因分析
为什么 java.util.Scanner 那么慢?
单行输入多个值的时候
比如
1 | 5 |
这个时候如果按照一行一行来读取数据的话,如果要把同一行的多个数据分离开,一种方法是使用 String.split()
方法,还有一种方法是使用 StringTokenizer
。