比StringTokenizer效率更高?

大胖子zxy 2019-09-04 03:20:06
String tmp = new String(x);
while (true) {
String subString = null;
int index = tmp.indexOf(",");
if (index < 0) {
break;
}
subString = tmp.substring(0, index);
tmp = tmp.substring(index + 1);
} 看见许多人都说上面这段代码效率高,但经过我n遍测试,怎么都比split低n倍
...全文
177 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
木见告 2021-01-06
  • 打赏
  • 举报
回复
这段怎么可能比split快,它每次循环都复制了N-1个元素,一套循环下来,复杂度差不多是(n^2/2),而split一套循环下来复杂度只有O(n)
wowpH 2019-09-05
  • 打赏
  • 举报
回复
按他的意思,应该是split快些
wowpH 2019-09-05
  • 打赏
  • 举报
回复
是我太low。。 我看到一篇博客。 《Java 代码优化:为什么有人说 StringTokenizer 会比String.split() 的效率高呢?他测试了吗?》, 一起来围观吧 https://blog.csdn.net/qq_27093465/article/details/92612980?utm_source=app
大胖子zxy 2019-09-05
  • 打赏
  • 举报
回复
时间对比,self是上面这段程序的时间: StringTokenizer: 0.019 split: 0.012 self: 12.549 StringTokenizer: 0.004 split: 0.004 self: 10.389 StringTokenizer: 0.004 split: 0.007 self: 10.812 StringTokenizer: 0.003 split: 0.002 self: 10.809 StringTokenizer: 0.003 split: 0.002 self: 10.64 StringTokenizer: 0.003 split: 0.002 self: 10.292 StringTokenizer: 0.003 split: 0.002 self: 10.585 上面这段程序效率慢n倍,是我写错了还是什么啊
大胖子zxy 2019-09-05
  • 打赏
  • 举报
回复
引用 2 楼 wowpH 的回复:
分割字符串我一般都用split,主要是方便
如果是字符串数量少的情况下,split确实方便,一般大量用StringTokenizer效率高,我不明白的是为啥这么多人说上面那段代码效率比这两个自带函数高,关键是我测出的情况截然相反啊
大胖子zxy 2019-09-05
  • 打赏
  • 举报
回复
StringTokenizer效率比split高
大胖子zxy 2019-09-05
  • 打赏
  • 举报
回复
貌似确实,split效率更高,消耗的cpu时间也低。。。好吧,坑。。。
浪费七年时间 2019-09-05
  • 打赏
  • 举报
回复
StringTokenizer注释里说了,新代码不推荐使用这个类,可以用String的split或者Pattern的split Thinking in Java里还用Scanner指定分隔符正则表达式来扫描字符串
wowpH 2019-09-04
  • 打赏
  • 举报
回复
分割字符串我一般都用split,主要是方便
wowpH 2019-09-04
  • 打赏
  • 举报
回复
Eeee,所以跟标题什么关系。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧