StringTokenizer

来源:互联网 发布:利润差额简算法 编辑:程序博客网 时间:2024/05/17 22:35
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 包。没有找到不鼓励使用的原因。

原创粉丝点击