String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
我如何可以存储键值对到使用StringTokenizer
一个HashMap
对象?如何将字符串存储到HashMap中使用的StringTokenizer
String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
我如何可以存储键值对到使用StringTokenizer
一个HashMap
对象?如何将字符串存储到HashMap中使用的StringTokenizer
使用StringTokenizer会看起来像这样我猜。
String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
StringTokenizer st = new StringTokenizer(input, "&");
Map<String, String> map = new HashMap<String, String>();
while (st.hasMoreElements()) {
String actualElement = st.nextToken();
StringTokenizer et = new StringTokenizer(actualElement, "=");
if (et.countTokens() != 2) {
throw new RuntimeException("Unexpeced format");
}
String key = et.nextToken();
String value = et.nextToken();
map.put(key, value);
}
System.out.println(map);
你也可以使用String.split()。在我看来,它看起来好一些。
Map<String, String> map = new HashMap<String, String>();
for (String actualElement : input.split("&")) {
map.put(actualElement.split("=")[0],
actualElement.split("=")[1]);
}
System.out.println(map);
要注意的是,你必须确保分隔符(在这种情况下“=”和“&”)是不允许出现在数据!当应该允许分隔符出现在数据中时,它们必须以某种方式被转义以正确处理输入。
据我所知,最初的问题被提及的StringTokenizer
使用,但它可以与Splitter
更容易和简洁的方式来完成从番石榴:
Map<String, String> map = ImmutableMap.copyOf(Splitter.on('&')
.withKeyValueSeparator("=")
.split(checkNotNull(input)));