请问一下,在HASHMAP中如何以:“键 值” 的方式打印出整个表举个列子,
HashMap<String,String> it = new HashMap<String,String>();it.put("a","i");
it.put("a","you");
it.put("a","go");
it.put("b","take");
it.put("b","get");要求能打印出成如下的方式
a i you go
b take get我尝试采用标准的Map.Entry<String,Srtring>...方式,感觉不方便。请问下有无比较有效的办法。
HashMap<String,String> it = new HashMap<String,String>();it.put("a","i");
it.put("a","you");
it.put("a","go");
it.put("b","take");
it.put("b","get");要求能打印出成如下的方式
a i you go
b take get我尝试采用标准的Map.Entry<String,Srtring>...方式,感觉不方便。请问下有无比较有效的办法。
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Set;
import java.util.Map.Entry;public class MapPrintUtil { private LinkedHashMap<String, List<String>> maplist = new LinkedHashMap<String, List<String>>(); public void put(String key, String value) {
if (!maplist.containsKey(key)) {
List<String> lst = new ArrayList<String>();
lst.add(value);
maplist.put(key, lst);
}
else {
List<String> lst = maplist.get(key);
lst.add(value);
}
} public void print() {
Set<Entry<String, List<String>>> set = maplist.entrySet();
for (Entry<String, List<String>> entry : set) {
String key = entry.getKey();
List<String> lst = entry.getValue();
print(key, lst);
}
} private void print(String key, List<String> lst) {
StringBuffer buffer = new StringBuffer();
buffer.append(key);
for (String value : lst) {
buffer.append(" ");
buffer.append(value);
}
System.out.println(buffer.toString() + "\n");
} public static void main(String[] args) {
MapPrintUtil util = new MapPrintUtil();
util.put("a", "i");
util.put("a", "you");
util.put("a", "go");
util.put("b", "take");
util.put("b", "get");
util.print();
}}
Google collections 提供了 MultiMap 支持一多映射。
来实现你的功能