StreamTokenizer与BufferedReader的使用

本文探讨了在解决PAT1032题时遇到的时间超时问题,对比了java.util.Scanner和java.io.StreamTokenizer的效率,发现StreamTokenizer由于避免正则表达式解析而更快。此外,还分析了BufferedReader相比于InputStreamReader的优势,即使在有缓冲区的情况下,BufferedReader以块为单位读取字符的速度提升显著,适合文件拷贝和字符读取场景。
摘要由CSDN通过智能技术生成

今天在刷PAT1032题的时候抱着学习的心态去百度了一下别人的代码和自己的代码比较去其糟糠,取其精华。还真发现了一些东西,思路都是一样的所以我能保证自己的答案肯定也是可以AC的,但是第四个测试用例一直都是超时,对于使用Java答题的我早已习惯Time Out了,但是别人的没有Time Out全都AC这才引起我的注意,于是才有了这篇博客。


java.util.Scanner与java.io.StreamToken

 Scanner通过正则表达式去解析一个一个“字节数据”,才会有他的 next()、nextInt()、nextBigDecimal()等方法,但是正则表达式的效率不高因此答题很容易Time Out。
 StreamToken是通过分析“字符流”将字符拆分为一个个Token,StreamToken底层会去区分Token类型:word、number,与Scanner比较是不是省了很多。因此StreamToken比Scanner快很多。
大佬介绍StreamToken

// 大佬的示例代码:
StreamTokenizer streamTokenizer = new StreamTokenizer(
        new StringReader("Mary had 1 little lamb..."));

while(streamTokenizer.nextToken() != StreamTokenizer.TT_EOF){
   

    if(streamTokenizer.ttype == StreamTokenizer.TT_WORD) {
   
        System.out.println(streamTokenizer.sval);
    } 
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值