MST

星途 面试题库

面试题:Java中StringTokenizer复杂场景应用

给定一个字符串,其格式为"key1:value1;key2:value2;key3:value3",请使用StringTokenizer将其解析为键值对存储到一个Map中,并处理可能存在的格式异常情况(比如缺少冒号或分号)。
49.8万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class StringToMapParser {
    public static Map<String, String> parseString(String input) {
        Map<String, String> resultMap = new HashMap<>();
        StringTokenizer outerTokenizer = new StringTokenizer(input, ";");
        while (outerTokenizer.hasMoreTokens()) {
            String pair = outerTokenizer.nextToken();
            StringTokenizer innerTokenizer = new StringTokenizer(pair, ":");
            if (innerTokenizer.countTokens() != 2) {
                throw new IllegalArgumentException("Invalid format: " + pair);
            }
            String key = innerTokenizer.nextToken();
            String value = innerTokenizer.nextToken();
            resultMap.put(key, value);
        }
        return resultMap;
    }

    public static void main(String[] args) {
        String input = "key1:value1;key2:value2;key3:value3";
        try {
            Map<String, String> map = parseString(input);
            System.out.println(map);
        } catch (IllegalArgumentException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

上述代码中:

  1. parseString 方法使用 StringTokenizer 对输入字符串按 ; 进行分割,然后对每个子字符串按 : 进行分割。
  2. 检查每个子字符串中是否包含一个 : ,如果不包含则抛出 IllegalArgumentException 异常。
  3. 将合法的键值对放入 HashMap 中并返回。
  4. main 方法中对 parseString 方法进行测试,并捕获可能出现的异常。