我们知道map是一个键值对,key其实是一个set也就是唯一的,当一个map中有大量的相同value值时我们使用key去获取一个个遍历我觉得方法不是很好,这时候我们可以将key和value反过来,使用value来当key一次循环后就将所有相同的value值找出来了。
话不多说一个简单的小例子如下代码:
List<String[]> list = new ArrayList<String[]>();
String[] str = {"111","222"};
String[] str1 = {"222","333"};
String[] str2 = {"333","444"};
String[] str3 = {"444","444"};
String[] str4 = {"555","333"};
String[] str5 = {"666","555"};
list.add(str);
list.add(str1);
list.add(str2);
list.add(str3);
list.add(str4);
list.add(str5);
Map<String, List<String>> map = new HashMap<String, List<String>>();
for(String[] obj:list){
String hawbNo = obj[0];
String bagNo = obj[1];
if(map.containsKey(bagNo)){
if(map.get(bagNo).isEmpty()){
List<String> list1 = new ArrayList<String>();
list1.add(hawbNo);
map.put(bagNo, list1);
}else{
map.get(bagNo).add(hawbNo);
}
}else{
List<String> list1 = new ArrayList<String>();
list1.add(hawbNo);
map.put(bagNo, list1);
}
}
System.out.println(map.keySet().toString());
System.out.println(map.values().toString());
控制台运行结果: