第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中StringTokenizer類與String.split方法的性能

Java中StringTokenizer類與String.split方法的性能

回首憶惘然 2019-12-21 13:18:09
在我的軟件中,我需要將字符串拆分為單詞。我目前有超過19,000,000個文檔,每個文檔都超過30個字。以下兩種方法中的哪一種是執(zhí)行此操作的最佳方法(就性能而言)?StringTokenizer sTokenize = new StringTokenizer(s," ");while (sTokenize.hasMoreTokens()) {要么String[] splitS = s.split(" ");for(int i =0; i < splitS.length; i++)
查看完整描述

3 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個贊

在Java 7中拆分只是為該輸入調(diào)用indexOf,請參閱參考資料。拆分應(yīng)該非???,接近indexOf的重復(fù)調(diào)用。


查看完整回答
反對 回復(fù) 2019-12-21
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個贊

就我所知,另一個未記錄的重要事情是,要求StringTokenizer返回定界符以及帶標(biāo)記的字符串(通過使用構(gòu)造函數(shù)StringTokenizer(String str, String delim, boolean returnDelims))還可以減少處理時間。因此,如果您正在尋找性能,我建議您使用類似以下的方法:


private static final String DELIM = "#";


public void splitIt(String input) {

    StringTokenizer st = new StringTokenizer(input, DELIM, true);

    while (st.hasMoreTokens()) {

        String next = getNext(st);

        System.out.println(next);

    }

}


private String getNext(StringTokenizer st){  

    String value = st.nextToken();

    if (DELIM.equals(value))  

        value = null;  

    else if (st.hasMoreTokens())  

        st.nextToken();  

    return value;  

}

盡管getNext()方法引入了開銷,但會為您丟棄定界符,但根據(jù)我的基準(zhǔn),它仍然快了50%。


查看完整回答
反對 回復(fù) 2019-12-21
  • 3 回答
  • 0 關(guān)注
  • 1071 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號