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)));