输入优化

模拟了一下数据量:一共100000行数据,每行100个,一共一千万的数据.

使用scanner的next()读取耗时2500ms左右,这个数据量并不算很夸张,的确有些题的数据量能到这个层次.

使用了这个输入优化后读取耗时400ms左右,这个速度在数据量大的时候可以说是至关重要.

import java.util.StringTokenizer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main {


    public static void main(String[] args) {
        InputReader in = new InputReader(System.in);
       
    }


    // 借鉴cf上某个java大佬的写法,只是为了解决读取输入太慢的问题
    static class InputReader {
        public BufferedReader reader;
        public StringTokenizer tokenizer;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream), 32768);
            tokenizer = null;
        }

        public String next() {
            while (tokenizer == null || !tokenizer.hasMoreTokens()) {
                try {
                    tokenizer = new StringTokenizer(reader.readLine());
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            return tokenizer.nextToken();
        }

        public int nextInt() {
            return Integer.parseInt(next());
        }

    }
}
posted @ 2020-03-10 22:48  continued258  阅读(113)  评论(0)    收藏  举报