java - 使用 StringTokenizer 复制 String.split

标签 java performance string split stringtokenizer

受到 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/

相关文章:

java - 如何使用 @WebMvcTest 从上下文中排除包

java - Spring 数据休息: Query parameters chained with logical OR

java - 如何编写一个java web服务来做远程登录?

java - 在 Java 中使用什么更好? x <= 10 或 x < 11?

正则表达式如何匹配可选字符

java - 我将如何在 Java 中拆分一个句子

java - JCR在运行时查找强制属性

MySQL性能: query if an indexed column has a given value

java - Mysql占用更多RAM空间并逐渐增加,没有任何下降

javascript 字符串解释为对象