千家信息网

BufferedReader的读取效率问题举例分析

发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,这篇文章主要讲解了"BufferedReader的读取效率问题举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"BufferedReader的读取
千家信息网最后更新 2025年01月25日BufferedReader的读取效率问题举例分析

这篇文章主要讲解了"BufferedReader的读取效率问题举例分析",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"BufferedReader的读取效率问题举例分析"吧!

    BufferedReader的读取效率

    1. 一般情况

    正常采用readline读取,一行行读取。

    readline要注意阻塞的情况,当一行没有"/r"、"/n"、"/r/n"就会阻塞在那。

    InputStreamReader isr = new InputStreamReader(connection.getInputStream(), "UTF-8");            in = new BufferedReader(isr);            String line;             while ((line = in.readLine()) != null) {                result += line;            }

    2. 采用read+CharBuffer

    inputStream = connection.getInputStream();            isr = new InputStreamReader(inputStream, "UTF-8");            in = new BufferedReader(isr);            CharBuffer bos = CharBuffer.allocate(20480);            StringBuilder builder = new StringBuilder();            while (in.read(bos) != -1) {                bos.flip();                builder.append(bos.toString());            }

    注:bos.flip()作用是将指针指向缓冲区的开头

    经过一千条数据的读取,发现采用read+CharBuffer的效率要比readline来的高效的多!!!!

    补充:

    后续实验中发现,其实并不是read方法和CharBuffer高效。其实是String对象频繁的创建导致效率低下,使用CharBuffer和StringBuilder解决了这一问题。

    OJ系统里用BufferedReader提高效率

    在OJ系统中做编程题时,如果从System.in读入的数据非常大的时候,使用Scanner非常影响效率,可能导致最终代码超时,所以最好改用BufferedReader来读取字符数据。

    例如:

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;  public class Main {     public static  void main(String[]args)     {        BufferedReader buf=null;        buf=new BufferedReader(new InputStreamReader(System.in));        String str=null;         try {             int a= Integer.parseInt(buf.readLine());                         double b=Double.parseDouble(buf.readLine());        } catch (IOException e) {            e.printStackTrace();        }        System.out.println();    }}

    感谢各位的阅读,以上就是"BufferedReader的读取效率问题举例分析"的内容了,经过本文的学习后,相信大家对BufferedReader的读取效率问题举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    0