当在对字符串进行分割操作的时候,最熟悉的估计就是split()方法了,但是,有的老铁却说尽量不要使用split(),推荐使用 StringTokenizer 这个类的效率会好点,不知道老铁,哪来的结论?
下面是我对这个问题的测试。
下面是测试代码:
private static final String TTM = "asdfg";
private static void testSplitEfficiency() {
while (true){
split();
stringTokenizer();
}
}
private static void stringTokenizer() {
StringTokenizer st = new StringTokenizer(TTM, "\\|");
StringBuilder stringBuilder = new StringBuilder();
while(st.hasMoreTokens()) {
stringBuilder.append(st.nextToken());
}
String s = stringBuilder.toString();
}
private static void split() {
String[] split = TTM.split("\\|");
StringBuilder stringBuilder = new StringBuilder();
for (String s : split) {
stringBuilder.append(s);
}
String s = stringBuilder.toString();
}
从上面的jprofiler的时间占比的图来看,这个 StringTokenizer 没有优势啊。
难道是我测试的姿势不对吗?
还有就是从出生时间来看:
这个split是后面出生的,既然是后面新生的,肯定是比之前的好,才会长江后浪推前浪。也看得出split是有存在的价值的。
实践出真知,至于那些使用打印时间来测试的是不是low了点呀。
有没有谁站出来,反对一下的,指出来我哪里不对啦的。