日期:2014-05-20  浏览次数:20852 次

java Map 一对多的处理
我需要实现一个树排版.

Map<String,String> map = new HashMap<String,String>();
String[] nodes = new String[10];
    for (int i = 0; i < nodes.length; i++) {
      nodes[i] = new String();
    }
    map.put(nodes[0],nodes[1]);
    map.put(nodes[0],nodes[2]);
    map.put(nodes[0],nodes[3]);

   Iterator iter = map.entrySet().iterator();
     while (iter.hasNext()) {
     Map.Entry entry = (Map.Entry) iter.next();
    System.out.println("Key="+entry.getKey().getClass()+"    Val="+entry.getClass());
     }

打印的结果是这样的
Key=class java.lang.String    Val=class java.util.HashMap$Entry
我需要的是这样的:
Key=class java.lang.String    Val=class java.util.HashMap$Entry
Key=class java.lang.String    Val=class java.util.HashMap$Entry
Key=class java.lang.String    Val=class java.util.HashMap$Entry

是不是方法用错了.我需要一个对象连接多个对象..如下图形

求指点~非常感谢..
Java map 集合

------解决方案--------------------
可以使用  Google Guava 中提供的 Mutltimap
------解决方案--------------------
map里面保存的同一个key对应的对象是唯一的。

给node加上node[] childs属性不就可以解决了。
看看数据结构里面的树吧,就可以解决了。
------解决方案--------------------

Map<String,String[]> map = new HashMap<String,String[]>();
String[] nodes = new String[10];
    for (int i = 0; i < nodes.length; i++) {
         nodes[i] = new String();
    }
    map.put(nodes[0],new String[]{nodes[1],nodes[2],nodes[3]});

------解决方案--------------------
map中的key是唯一的,你应该把nodes[1],nodes[2],nodes[3]放到nodes[0]这个key对应的value中,然后再拆分,输出,就跟3楼的写法一样