假设我有n个数字(n非常大,假设至少10亿,用System.in输入,一行一个数字),那么我最快读取这n个数字建立数组的办法是什么?
是这样吗:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0; i < n; i++){
array[i] = Integer.parseInt(br.readLine());
}但是每次转换都挺浪费时间的
是这样吗:BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0; i < n; i++){
array[i] = Integer.parseInt(br.readLine());
}但是每次转换都挺浪费时间的
Scanner sc = new Scanner(System.in);
for (int i=0;i<array.length;i++) {
array[i] = sc.nextInt();
}
你还不如把这些数存在文件里,直接读取文件。
基本上必死,4G内存也就40亿字节而已,一个int本身就占用4字节了。不过估计楼主也就说说,10亿的数据量全部走System.in本身也很够呛。
//start ---需要根据线程数进行计算。
public void read(int start,int length)throws IOException
{
raf.seek(start);
while(length>0)
{
String str=raf.readLine();
if(str!=null)
{
addElements(str); //将行结构加入集合
length-=str.length()+x; //x以文件结构而定。
}
else
break;
}
raf.close();
}
}