面试题答案
一键面试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());
}
}
}
上述代码中:
parseString
方法使用StringTokenizer
对输入字符串按;
进行分割,然后对每个子字符串按:
进行分割。- 检查每个子字符串中是否包含一个
:
,如果不包含则抛出IllegalArgumentException
异常。 - 将合法的键值对放入
HashMap
中并返回。 - 在
main
方法中对parseString
方法进行测试,并捕获可能出现的异常。