MST

星途 面试题库

面试题:Java中StringTokenizer与String split方法在处理复杂分隔符场景下的差异

假设你有一个字符串 "a:;b:c,;d",需要以 ":"、";"、"," 作为分隔符进行分割,分别使用StringTokenizer和String split方法实现,然后阐述两者在处理这个复杂分隔符场景下的不同表现。
41.0万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

使用StringTokenizer实现

import java.util.StringTokenizer;

public class StringSplitExample {
    public static void main(String[] args) {
        String str = "a:;b:c,;d";
        StringTokenizer tokenizer = new StringTokenizer(str, ":;,");
        while (tokenizer.hasMoreTokens()) {
            System.out.println(tokenizer.nextToken());
        }
    }
}

使用String split方法实现

public class StringSplitExample {
    public static void main(String[] args) {
        String str = "a:;b:c,;d";
        String[] parts = str.split("[;:,]");
        for (String part : parts) {
            System.out.println(part);
        }
    }
}

两者在处理复杂分隔符场景下的不同表现

  1. 语法与使用方式
    • StringTokenizer:构造函数直接接收字符串和分隔符,通过hasMoreTokens()nextToken()方法依次获取分割后的子串。
    • String split:通过正则表达式指定分隔符,一次性返回所有分割后的子串组成的数组。
  2. 处理效率
    • StringTokenizer:相对高效,因为它是基于字符数组的扫描,不需要处理复杂的正则表达式。
    • String split:如果分隔符是简单字符,效率尚可,但如果使用复杂正则表达式,会因为正则表达式的解析而有一定性能损耗。
  3. 空字符串处理
    • StringTokenizer:默认情况下,连续的分隔符会被视为一个分隔符,不会返回空字符串。
    • String split:如果分隔符在字符串开头、结尾或者连续出现,会产生空字符串,在结果数组中会包含这些空字符串。