Java 仍然建议USACO使用StringTokenizer吗?
我刚刚开始使用Java解决一些USACO实践问题。然而,我立即遇到了一些关于解析文件输入的混乱 USACO培训页面上说: 重要提示:BufferedReader和StringTokenizer的效率要高得多 与许多其他读取输入的方案相比。他们可以创造巨大的财富 您的程序效率的差异!使用它们 然而,Oracle文档说: StringTokenizer是为兼容而保留的遗留类 原因,尽管新代码不鼓励使用它。建议这样做 任何寻求此功能的人都可以使用String的split方法 或者改为java.util.regex包 我在网上发现了各种各样的观点。一些人,包括培训页面,说应该使用Java 仍然建议USACO使用StringTokenizer吗?,java,parsing,Java,Parsing,我刚刚开始使用Java解决一些USACO实践问题。然而,我立即遇到了一些关于解析文件输入的混乱 USACO培训页面上说: 重要提示:BufferedReader和StringTokenizer的效率要高得多 与许多其他读取输入的方案相比。他们可以创造巨大的财富 您的程序效率的差异!使用它们 然而,Oracle文档说: StringTokenizer是为兼容而保留的遗留类 原因,尽管新代码不鼓励使用它。建议这样做 任何寻求此功能的人都可以使用String的split方法 或者改为java.util
StringTokenizer
,因为它比String.split()
快,后者比Scanner
快(尽管答案不同意)。其他人说应该使用Scanner
或String.split()
目前哪种方法最实用?在编程竞赛中,代码的逻辑和算法部分比获取输入数据的方法更重要
Scanner
和StringTokenizer
之间只有几毫秒的差异,这不会对您的解决方案产生任何重大影响
但是,一般来说,Scanner更易于使用,性能也一直很好,而(您所说的)StringTokenizer是一个遗留类,不鼓励使用它。应该让您了解性能差异StringTokenizer
似乎要快得多,但速度并不是一切。没有人希望您为他们编写需要在一年内更新的代码,因为它不适用于新的JDK版本。Scanner
有效、易于使用,通常性能足以满足编程竞赛的需要。