ACM中Java输入输出[通俗易懂]

ACM中Java输入输出[通俗易懂]最初写算法时,是用Scanner的。因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时。发现Scanner远远不能满足条件。下面列出几种常用的输入输出方式。(输出统一用printwriter,系统的system.out太慢,结尾要释放缓存才能输出,不然数据放在缓存中输不出来)1:Scanner这个类最慢,但是最好用,因为这个类没有缓存处理,所以io方面大量输入…

大家好,又见面了,我是你们的朋友全栈君。

最初写算法时,是用Scanner的。因为当时接触的测试数据基本都是以算法的复杂度为主,但是后面遇到大量的输入数据时。发现Scanner远远不能满足条件。下面列出几种常用的输入输出方式。(输出统一用printwriter,系统的system.out太慢,结尾要释放缓存才能输出,不然数据放在缓存中输不出来)
1:Scanner 这个类最慢,但是最好用,因为这个类没有缓存处理,所以io方面大量输入读取特别慢。

Scanner sc=new Scanner(System.in);
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); 

2:bufferedreader这个类最不方便,但是可以满足大部分输入速度的需求,输入缺点就是只能按行读取数据,必要时需要字符串分割,转成int以及其他类型还需要转换。

BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); 

这种输入方式只能输入字符串然后分割处理等等,效率比Scanner高很多
3:StreamTokenizer这个类最快,相对第二种也好用很多,他的底层是用字符分割用,但是这样处理有很大局限性。输入string类型除了纯字母。否则混合输入会出错,特殊符号在字符串中输入也不行。

StreamTokenizer in=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
in.nextToken();int n=(int)in.nval;
in.nextToken();long p=(long)in.nval;
in.nextToken();double q=in.nval;
out.print(n);
out.flush();

这种输入方式效率最高,巨大的输入量也能快速处理。
下面附上同一个题*(百度之星2018资格赛1002三种输入的时间差距)
Scanner超时
这里写图片描述
bufferedreader
这里写图片描述
Streamtokenizer最快
这里写图片描述
其中bufferedreader最难用,Scanner最好用,但是streamtokenizer最快,刚开始可能用的不习惯,但是习惯就好了,毕竟这个影响太大了,至于输出。系统输出太慢。大量数据还会超时。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/144966.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JavaScript语言基础知识7

    JavaScript语言基础知识7

    2022年1月7日
  • python面试题大全(一)

    python面试题大全(一)注:本面试题来源于网络,转载请注明来自http://www.cnblogs.com/goodhacker/p/3366618.html。1.(1)python下多线程的限制以及多进程中传递参数的方式

    2022年7月5日
  • 哈希表基本概念介绍及哈希冲突的处理方法(附源码)

    哈希表基本概念介绍及哈希冲突的处理方法(附源码)工科生一枚,热衷于底层技术开发,有强烈的好奇心,感兴趣内容包括单片机,嵌入式Linux,Uboot等,欢迎学习交流!爱好跑步,打篮球,睡觉。欢迎加我QQ1500836631(备注CSDN),一起学习交流问题,分享各种学习资料,电子书籍,学习视频等。文章目录哈希表和哈希函数的概念哈希函数的构造直接定址法数字分析法平方取中法折叠法除留余数法(常用)随机数法哈希函数的选择处理冲突的方法开放定址法再哈希法链地址法建立一个公共溢出区代码实现哈希表和哈希函数的概念  哈希表(散列表),是根据关键码值(Ke.

    2022年6月29日
  • vue实现管理系统_学生管理系统实验报告

    vue实现管理系统_学生管理系统实验报告Vue项目:学生管理系统增删改查一套免费获取

    2022年9月19日
  • 2014年度个人年终工作总结

    2014年度个人年终工作总结2014年度个人年终工作总结2014年度过去了,迎来了新的2015年度,总结在过去的一年中的得失,是为了在新的一年中创建更好的工作秩序。2014年的工作主要围绕以下三个技术点进行的:一、delph

    2022年7月4日
  • iis 启动不了,提示发生意外错误0x8ffe2740 解决最好方法 心得

    iis 启动不了,提示发生意外错误0x8ffe2740 解决最好方法 心得最近总出来两个错误1。每次启动IIS时,总报 “外错误0x8ffe2740 ”2。打开Vs.net2003时,又出来什么目前Asp.net不是1.1什么的。总之不能运行。查www.google.com发现  IIS的错误是因为80端口被占用的缘故。网上侠客,只是说先改IIS的端口。解决最好方法:A)我用“FPort.exe”找到占用端口的程序。B)然后将它

    2022年7月13日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号