假设我有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());
}但是每次转换都挺浪费时间的

解决方案 »

  1.   

    parseInt就是最好的,放心用吧。
      

  2.   

    已经知道N的大小?int[] array = new int[N];
    Scanner sc = new Scanner(System.in);
    for (int i=0;i<array.length;i++) {
      array[i] = sc.nextInt();
    }
      

  3.   

    10亿个数,能用System.in输入吗?
    你还不如把这些数存在文件里,直接读取文件。
      

  4.   


    基本上必死,4G内存也就40亿字节而已,一个int本身就占用4字节了。不过估计楼主也就说说,10亿的数据量全部走System.in本身也很够呛。
      

  5.   

    如果数据格式是确定的,可以考虑使用RandomAccessFile进行读取装饰,之后再进行相应的转换。可能的方法如下:
    //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();
    }
    }