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倍
uj5u.com熱心網友回復:
Eeee,所以跟標題什么關系。uj5u.com熱心網友回復:
分割字串我一般都用split,主要是方便uj5u.com熱心網友回復:
StringTokenizer效率比split高uj5u.com熱心網友回復:
如果是字串數量少的情況下,split確實方便,一般大量用StringTokenizer效率高,我不明白的是為啥這么多人說上面那段代碼效率比這兩個自帶函式高,關鍵是我測出的情況截然相反啊
uj5u.com熱心網友回復:
時間對比,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倍,是我寫錯了還是什么啊
uj5u.com熱心網友回復:
是我太low。。我看到一篇博客。
《Java 代碼優化:為什么有人說 StringTokenizer 會比String.split() 的效率高呢?他測驗了嗎?》, 一起來圍觀吧 https://blog.csdn.net/qq_27093465/article/details/92612980?utm_source=app
uj5u.com熱心網友回復:
按他的意思,應該是split快些uj5u.com熱心網友回復:
StringTokenizer注釋里說了,新代碼不推薦使用這個類,可以用String的split或者Pattern的splitThinking in Java里還用Scanner指定分隔符正則運算式來掃描字串
uj5u.com熱心網友回復:
貌似確實,split效率更高,消耗的cpu時間也低。。。好吧,坑。。。
uj5u.com熱心網友回復:
這段怎么可能比split快,它每次回圈都復制了N-1個元素,一套回圈下來,復雜度差不多是(n^2/2),而split一套回圈下來復雜度只有O(n)轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245812.html
標籤:Java相關
