JAVA 中map和List实现一个键对应多: 野芦苇知识网

野芦苇知识网(www.yeluwei.com.cn){dj2}{zx1}整理报道:

JAVA 中map和List实现一个键对应多

有一段这样的数据:

quarterNameID[0]=\”1989:1:第1期\”;
quarterNameID[1]=\”1989:2:第2期\”;
quarterNameID[2]=\”1989:3:第3期\”;
quarterNameID[3]=\”1989:4:第4期\”;
quarterNameID[4]=\”1989:5:第5期\”;
quarterNameID[5]=\”1989:6:第6期\”;
quarterNameID[6]=\”1990:1:第1期\”;
quarterNameID[7]=\”1990:2:第2期\”;

quarterNameID[8]=\”1990:3:第3期\”;
quarterNameID[9]=\”1990:4:第4期\”;
quarterNameID[10]=\”1990:5:第5期\”;
quarterNameID[11]=\”1990:6:第6期\”;
quarterNameID[12]=\”1991:1:第1期\”;
quarterNameID[13]=\”1991:2:第2期\”;
quarterNameID[14]=\”1991:3:第3期\”;
quarterNameID[15]=\”1991:4:第4期\”;
quarterNameID[16]=\”1991:5:第5期\”;
quarterNameID[17]=\”1991:6:第6期\”;
quarterNameID[18]=\”1992:1:第1期\”;
quarterNameID[19]=\”1992:2:第2期\”;
quarterNameID[20]=\”1992:4:第4期\”;

我现在已经用正则表达式将分成“1992:2:”这样的单元。现在想在添加在Map<String,List<String>> map=new HashMap<String,List<String>>()中,以实现一个键对应多个值的目标。例如:

键“1991”映射到一个List,List中的值为 1,2,3,4,5,6。

键“1992”映射到一个List,List中的值为 1,2,4。

我写的代码如下:

while(matcher.find()){
String unit=matcher.group();
String year=unit.substring(0,4);
String[] qi=unit.split(\”:\”);
List<String> temp=new ArrayList<String>();
temp.add(qi[1]);
map.put(year, temp);
System.out.println(temp.size());
}

这样做。每次不能实现我想要的效果,问一下各位该怎样修正?

问题补充

我知道每次new 了一个list 不可能实现的 但是不知道怎么改 麻烦各位了

你在取到year的时候,先看一下map中是否已经有了,假如有了map.get(year).add(qi[i]),假如没有再new list。


踏云乘风的感言:

一点就通,多谢了

给你说下大概的思路,

1:先遍历出年来,放到一个数组中,

2:遍历所有数据,年份雷同的期数都放到一个list中,并且把list组成数组;

3:遍历数组,把数组和list数组进行联合同一放到map中。

提问人的追问

这样写进之后,假如要读出1992的list。用get(\”1992\”)就可以返回这个键的list是吧

回答人的补充

是的,但是要留意的是1992的类型必须是string


我有更好的答复收躲转载到QQ空间

整理编辑:野芦苇知识网:www.yeluwei.com.cn


原文链接:
[]版权所有,转载时必须以链接形式注明原始出处及本声明

评论

说说您的想法

4+3= (required)

郑重声明:资讯 【JAVA 中map和List实现一个键对应多: 野芦苇知识网】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——