哪种字符串分割方式更快?StringTokenizer与String.split()对比
Java字符串分割性能对比:StringTokenizer vs split("")
结论:方法一基于StringTokenizer的实现性能更快
原因很直接:
- StringTokenizer是专门为字符串分割设计的轻量级工具,内部仅做简单的字符遍历与位置判断,没有多余的额外逻辑。它的
countTokens()和nextToken()方法都是直接基于字符位置做判断,步骤简洁、执行高效。 - 方法二中的
split("")底层依赖正则表达式引擎(Pattern和Matcher),哪怕分割符是空字符串,正则引擎也会启动完整的编译、匹配流程,这些额外操作会带来明显的性能损耗。 - 另外,
split("")处理空字符串分割时,还需要额外处理开头、结尾的空串边界情况,进一步增加了运行开销;而StringTokenizer指定空字符串作为分隔符时,会直接逐个返回单个字符,逻辑更直接纯粹。
方法一代码实现:
StringTokenizer st = new StringTokenizer(br.readLine(), "", false); String[] s = new String[st.countTokens()]; int a = 0; while (st.hasMoreTokens()) s[a++] = st.nextToken();
方法二代码实现:
String[] s = br.readLine().split("");
内容的提问来源于stack exchange,提问作者Febrie
相关产品推荐
相关产品推荐

