我知道这是一个非常初学者的问题,但我别无选择:-)我需要在Velocity中编写一个程序,它将获取Map并写入所有值及其键(不是键及其值) !!!) - 允许在更多键下记录每个值。
如果你能够做到这一点,请帮助我,我将感谢每一个答案:-) 非常感谢你!
在java中它看起来像这样:
HashMap<String, String> map = new HashMap<String, String>();
map.put("key1", "val1");
map.put("key2", "val1");
map.put("key3", "val2");
map.put("key4", "val1");
HashMap<String, ArrayList<String>> hmap = new HashMap<String, ArrayList<String>>();
for (Entry<String, String> item : map.entrySet()) {
String val = item.getValue();
if (!hmap.containsKey(val)) {
hmap.put(val, new ArrayList<String>());
hmap.get(val).add(item.getKey());
} else {
hmap.get(val).add(item.getKey());
}
}
for (Entry<String, ArrayList<String>> item : hmap.entrySet()) {
System.out.println(item.getKey() + " " + item.getValue());
}
答案 0 :(得分:2)
最后我已经解决了。这是我的解决方案:
#set($valToKey = {})
$!valToKey.put("aaa", ["bbb", "ccc"])
$!valToKey.get("aaa").add("ddd")
## fill valToKey map
#foreach($item in $tmp.entrySet())
#foreach($value in $item.value)
#if($valToKey.containsKey($value))
$!valToKey.get($value).add($item.key) ## use of dummy to prevent printing 'true'
#else
$!valToKey.put($value, [$item.key])
#end
#end
#end
## print valToKey map
#foreach($item in $valToKey.entrySet())
$item.key
## print all values according to key
#foreach($value in $item.value)
$indent -> $value
#end
#end