String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
HashMap
を使用してキーと値のペアをオブジェクトに格納するにはどうすればよいStringTokenizer
ですか?
String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
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)));