比如一组这样的数据(字符串):
1394 0012 7020 9671:2015-03-01,
1789 0012 4873 9180:2015-03-01,
0284 0012 3848 4900:2015-03-02,
1309 0012 8281 0452:2015-03-03,
2889 0012 8475 0897:2014-12-06,
1044 0012 2564 1807:2014-12-06,
目的想将相同日期的value值对应的key值组合在一起,如:
1394 0012 7020 9671,1789 0012 4873 9180:2015-03-01
一开始想将改数据转为Map<String,String>来实现,但因为Map的key值不可以相等,不可以实现,但可以将这个Map再转为Map<String,List<String>>,即将Map<String,String>的key值add到List<String>中,例子如下:
其中ewcode为上面一组字符串。
String codetime[] = ewcode.split(",");
Map<String,List<String>> sendMap = new HashMap<String,List<String>>();
for (int i = 0; i < codetime.length; i++) {
String codes = codetime[i];
String time = codes.substring(codes.length()-10);
if(sendMap.containsKey(time)){ //i>0时(第二步开始)执行
List<String> list = sendMap.get(time); //如果此条数据的时间与之前的重复时,list取得之前相对应的value值,否则为null
list.add(codes.substring(0, 19)); //list增加当前字符串的":"之前的数据
sendMap.put(time, list); //如果time重复,则list覆盖
}else{ //i=0时执行第一步
List<String> list= new ArrayList<String>();
list.add(codes.substring(0, 19));
sendMap.put(time, list); //将时间设为key值
}
}
这个例子也可以反推到取得Map中相同Value值的Key值。