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

求救关于list合并成map的问题
有4个string数组

s1={0,1}

s2={0,2}

s3={1,1}

s4={1,2}

list <string【】>={s1,s2,s3,s4}

现在想对list中的string数组的第一个元素相同的合并为map的key值,对string数组第二个元素组成新的数组,作为value值。

得到的map为

map<string,string【】>= {key=0 value={1,2},key=1  value={1,2}}
希望各位大神多帮帮忙。



------解决方案--------------------

public static void testMap() {

List<String[]> list = createDatas();
Map<String, List<String>> map = new HashMap<String, List<String>>();
for (String[] arr : list) {
if (2 < arr.length) {
throw new IllegalArgumentException("out of index");
}
String a = arr[0];
String b = arr[1];
if (!map.containsKey(a)) {
List<String> tmpList = new ArrayList<String>();
tmpList.add(b);
map.put(a, tmpList);
} else {
map.get(a).add(b);
}
}

Iterator<Entry<String, List<String>>> it = map.entrySet().iterator();
while (it.hasNext()) {
Entry<String, List<String>> entry = it.next();
System.out.println(entry);
}
// ========= output=========
// 1=[1, 2, 2, 2]
// 0=[1, 2]

}

private static List<String[]> createDatas() {
String[] s1 = { "0", "1" };

String[] s2 = { "0", "2" };

String[] s3 = { "1", "1" };

String[] s4 = { "1", "2" };
String[] s5 = { "1", "2" };
String[] s6 = { "1", "2" };
List<String[]> list = new ArrayList<String[]>();
list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4);
list.add(s5);
list.add(s6);
return list;
}