受到 this 的鼓励,事实上我有数十亿个字符串要解析,我试图修改我的代码以接受 StringTokenizer 而不是 String[]
我和获得美味的 x2 性能提升之间唯一剩下的就是当你做的时候
"dog,,cat".split(",")
//output: ["dog","","cat"]
StringTokenizer("dog,,cat")
// nextToken() = "dog"
// nextToken() = "cat"
如何使用 StringTokenizer 获得类似的结果?有没有更快的方法来做到这一点?
最佳答案
您实际上只是对逗号进行分词吗?如果是这样,我会编写自己的分词器——它最终可能会比更通用的 StringTokenizer 更高效,后者可以查找多个分词,并且您可以让它按您喜欢的方式运行。对于这样一个简单的用例,它可以是一个简单的实现。
如果它有用,您甚至可以实现 Iterable<String>
并通过强类型而不是 Enumeration
获得增强的循环支持StringTokenizer
提供的支持.如果您需要任何帮助编写这样一个野兽的代码,请告诉我 - 这真的不应该太难。
此外,在偏离现有解决方案太远之前,我会尝试对您的实际数据运行性能测试。您是否知道在 String.split
中实际花费了多少执行时间? ?我知道您有很多字符串需要解析,但如果您之后要对它们做任何重要的事情,我希望这比拆分更重要。
关于java - 使用 StringTokenizer 复制 String.split,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986543/