StringTokenizer

本文对比了Java中StringTokenizer与String的split方法在处理特定分隔符时的效率及使用方式。通过具体示例展示了两者在性能上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

StringTokenizer
构造函数:
     StringTokenizer (String  str )
    tokenizer 使用默认的分隔符集   " \t\n\r\f",即:空白字符、制表符、换行符、回车符和换页符。分隔符字符本身不作为标记。
     StringTokenizer (String  str, String  delim)
     StringTokenizer (String  str, String  delim,  boolean returnDelims )
     delim  参数中的字符都是分隔标记的分隔符, returnDelims  标志为  true ,则分隔符字符也作为标记返回。
    作用与String的split类似,但是要比split高效,并且在以'|'为分隔符分隔字符串时,StringTokenizer不需要转义字符'|'。
    StringTokenizer与split比较:
         package  com.imageutils;
import java.util.StringTokenizer;
public class Test {
    public static void main(String[] args) {
        String str = "as|d|f,d|s,f|w|e|g|f|w|e|v|b|b|r|q|e|t|q|e|r|g|a|f|d|b|dn|t|j|rtj,tnyli|op[ry|ujd|n|h|s|rta|ere|fdv|tar|eg|a";
        splitTest(str);
        stringTokenizerTest(str);
    }
    private static void splitTest(String str) {
        long time = System.nanoTime();
        
        String[] s = str.split("\\|");
        System.out.println(s.length);
        
        System.out.println(System.nanoTime() - time);
    }
    private static void stringTokenizerTest(String str) {
        long time = System.nanoTime();
        
        StringTokenizer st = new StringTokenizer(str, ",|"true);
        System.out.println(st.countTokens());
        
        System.out.println(System.nanoTime() - time);
    }
}

结果:
           40
1746511
85
304710
    
     StringTokenizer(str,  ",|" true )中",|",','和'|'都会作为单个的分隔符来使用。而且,从以上打印出的结果可以明显看出,分隔同一个字符串,split用时1746511,而StringTokenizer用时304710(nanoTime()以纳秒为单位计时,一般用于性能测试,不能像 currenttimemillis()那样 转化日期)。
    只是在API文档中最后说到, StringTokenizer  是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用  String  的  split  方法或 java.util.regex 包。没有找到不鼓励使用的原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值