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

List 如何转换成MAP
一个list数据如下
[[a,1],[a,2],[a,3],[s,1],[s3]] 
要转成 MAP 数据格式如下
[a,list1] list1={1,2,3}
[s,list2] list2={1,3}
for (int i = 0; i < list.size(); i++) {
 Object[] s=list.get(i);
  怎么写现在???
}


------解决方案--------------------
最开始定义HashMap map;

for (int i = 0; i < list.size(); i++) {
Object[] s=list.get(i);
if (!map.containsKey(s[0])) {
map.put(s[0], new ArrayList());
}
List lst = map.get(s[0]);
lst.add(s[1]);
}





------解决方案--------------------
Java code

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Test{
    static List<Object[]> list= new ArrayList<Object[]>();
    
    public static void main(String args[]){
        Object a = new Object();
        Object s = new Object();
        Object[] o1= {a,1};
        Object[] o2= {a,2};
        Object[] o3= {a,3};
        Object[] s1= {s,1};
        Object[] s2= {s,3};
        list.add(o1);list.add(o2);list.add(o3);list.add(s1);list.add(s2);
        HashMap<Object,List> map = new HashMap<Object,List>();
        for (int i = 0; i < list.size(); i++) {
              Object[] array=list.get(i);
              if(map.containsKey(array[0])){
                  map.get(array[0]).add(array[1]);
              }
              else{
                  List list= new ArrayList();
                  list.add(array[1]);
                  map.put(array[0],list);
              }
        }
        System.out.println(map.size());
        System.out.println(map.get(a));
        System.out.println(map.get(s));
    }
}