📜  java中的fastreader(1)

📅  最后修改于: 2023-12-03 14:42:54.327000             🧑  作者: Mango

Java中的FastReader

在Java编程中,我们经常需要从标准输入或文件中读取输入。但是Java自带的输入流读取速度较慢,在一些竞赛或性能要求高的场合,需要使用更快的输入方式。

FastReader是一种更快速的Java输入方式,可以在比标准输入流更快的速度读取输入数据。

FastReader的实现

FastReader的实现是基于Java的BufferedReader和InputStreamReader。FastReader的构造函数可以接收一个InputStream对象,如下所示:

class FastReader {
    BufferedReader br;
    StringTokenizer st;
    public FastReader(InputStream stream) {
        br = new BufferedReader(new InputStreamReader(stream), 32768);
        st = null;
    }
}

在构造函数中,我们初始化了一个BufferedReader和一个StringTokenizer对象。BufferedReader可以读取更快的输入数据,而StringTokenizer可以有效地拆分输入数据。

我们还可以添加一些方法来读取不同类型的数据。

class FastReader {
    BufferedReader br;
    StringTokenizer st;
    public FastReader(InputStream stream) {
        br = new BufferedReader(new InputStreamReader(stream), 32768);
        st = null;
    }

    String next() { // 读取下一个字符串
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }

    int nextInt() { // 读取下一个整数
        return Integer.parseInt(next());
    }

    long nextLong() { // 读取下一个长整数
        return Long.parseLong(next());
    }

    double nextDouble() { // 读取下一个Double
        return Double.parseDouble(next());
    }

    String nextLine() { // 读取下一行
        String str = "";
        try {
            str = br.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }
}

这几个方法分别可以读取字符串、整数、长整数、双精度浮点数和一整行数据。

FastReader的使用

使用FastReader也很简单,只需要在需要读取输入数据的地方创建一个FastReader对象并调用方法即可。

FastReader in = new FastReader(System.in);
int n = in.nextInt();
String str = in.next();
double d = in.nextDouble();
总结

FastReader是一种更快速的Java输入方式,可以在比标准输入流更快的速度读取输入数据。它的实现基于Java的BufferedReader和StringTokenizer对象,在需要读取输入数据时可以快速读取不同类型的数据。在竞赛或性能要求高的场合,使用FastReader可以提高程序的运行效率。