java Map集合中存放不同的Key 且key 对应多个不同的值??

一个List集合中存放了许多节点类型的字符串,比如:在List定义的list中存放了<Node1>A1</Node><Node2>B1</Node><Node3>C1</... 一个List集合中存放了许多节点类型的字符串,
比如:在List定义的list中存放了

<Node1>A1</Node>
<Node2>B1</Node>
<Node3>C1</Node>

<Node1>A2</Node>
<Node2>B2</Node>
<Node3>C2</Node>

<Node1>A3</Node>
<Node2>B3</Node>
<Node3>C3</Node>

等等这样可以重复的字符串,

现在我要做的是提取出节点的名称(比如:Node1)和值(比如:A1),

----上面的已经作出来了,利用循环出来 重要的是下面的逻辑 我不会---

将上面循环取到的一个 节点 与 值 存放到Map集合中
Map<String,List<String>>> map = new HashMap<String,List<String>>
key是节点名称比如:Node1 key对应的List是节点对应的值 (比如:A1,A2)

但是现在的问题是:有节点名称Node1,对应的是A1.A2,A3 怎样将这些数据放入到上述类型的Map集合中。
请各位大侠帮助

若不是同一个节点,就需要创建一个List集合来存放该节点对应的值
展开
 我来答
淡定帝中帝
推荐于2017-10-04 · 超过18用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:42.2万
展开全部
List<String> list = new ArrayList<String>();

list.add("node1-a1");
list.add("node2-a1");
list.add("node3-a1");
list.add("node1-a2");
list.add("node2-a2");
list.add("node3-a2");
list.add("node1-a3");
list.add("node2-a3");
list.add("node3-a3");

Map<String, List<String>> map = new HashMap<String, List<String>>();

for(String string : list){
String node = string.split("-")[0];
String value = string.split("-")[1];

if(map.containsKey(node)){
List<String> list2 = map.get(node);
list2.add(value);
map.put(node, list2);
}else{
List<String> list2 = new ArrayList<String>();
list2.add(value);
map.put(node, list2);
}

}
来自:求助得到的回答
4everlovehj
2013-01-10 · TA获得超过319个赞
知道小有建树答主
回答量:299
采纳率:0%
帮助的人:190万
展开全部
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args){
Map<String ,List<String>> map = new HashMap<String ,List<String>>();//存放类型的map
List l1 = new ArrayList();//假设这是你的list
List<String> l2 = new ArrayList<String>();//假设这是你的note节点集合
for(int i =0;i<l2.size();i++){
map.put(l2.get(i), l1);//存放键值
}
Iterator iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry entry = (Map.Entry)iter.next();
System.out.println(entry.getKey()+"======》"+entry.getValue());
}
}
}
大致就是这样子的。我不清楚你前面节点和值是怎么存放的。我就假设了两个值。你按照这种思路可以自己试试~~相信你可以做出来的。加油
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmy_sk521
2013-01-10 · TA获得超过2272个赞
知道小有建树答主
回答量:1330
采纳率:73%
帮助的人:718万
展开全部
很简单呀,就是循环list,把list中的每个元素取出来,获得节点名和节点值,用map.get(节点名)。判断在map中有没有这个节点,如果返回的list为空就表示没有这个结点,new List对象,把节点值放到list中,然后再map.put(节点名,list);如果返回的list不是空表示map中已经有这个节点了,将节点值放到list中,然后再map.put(节点名,list);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友248d9e6
2013-01-10 · 超过24用户采纳过TA的回答
知道答主
回答量:133
采纳率:0%
帮助的人:75万
展开全部
思路很简单,就是获取node名,取出对应的value,根据循环,插入到不同的map中。你可以简单地把node的名字存到数组里面,然后循环得出,条件判断不同的node名,插入到不同的map中,这样的思想比较简单。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
happy2012zjh
2013-01-10 · TA获得超过273个赞
知道小有建树答主
回答量:1197
采纳率:100%
帮助的人:513万
展开全部
2361004892加这个,方便交流
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式