是否仍然建议USACO使用StringTokenizer?

时间:2015-03-29 23:53:02

标签: java parsing

我刚刚开始使用Java解决一些USACO实践问题。但是,我立即遇到了一些关于解析文件输入的困惑......

USACO培训页面说:

  

重要提示:BufferedReader和StringTokenizer效率更高   比许多其他阅读输入的方案。他们可以做出巨大的贡献   您的计划效率差异!使用它们!

然而,Oracle文档说:

  

StringTokenizer是为保持兼容性而保留的旧类   原因虽然在新代码中不鼓励使用它。建议   任何寻求此功能的人都使用String的split方法   或者改为java.util.regex包。

我发现互联网上的意见非常复杂。有些人(包括培训页面)表示应该使用StringTokenizer,因为它比String.split()更快,而Scanner更快(尽管this回答不同意)。其他人说应该使用ScannerString.split(),因为它们更易于使用,因为解析文件的性能成本可以忽略不计。

目前哪种方法最实用?

1 个答案:

答案 0 :(得分:2)

在编程比赛中,代码的逻辑和算法部分比用于获取输入数据的方法更重要。

ScannerStringTokenizer之间只有几毫秒的差异,这不会以任何主要方式影响您的解决方案。

但是,一般而言,Scanner易于使用并且始终如一地表现良好,而(您说过)StringTokenizer是一个遗留类,因此不鼓励使用它。