import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*<p>Copyright©2013-2015 AutoChina International Ltd. All rights reserved.</p>
*@Author {Your_Name}
*/
public class ListToMap {
public static void main(String[] args) {
ListToMap list4Map = new ListToMap();
/**
* 构造数据
*/
List<ItemDomain> list = new ArrayList<ItemDomain>();
ItemDomain test1 = new ItemDomain(1, "name1", "address1");
ItemDomain test2 = new ItemDomain(1, "name2", "address2");
ItemDomain test3 = new ItemDomain(1, "name3", "address3");
ItemDomain test4 = new ItemDomain(2, "name1", "address1");
ItemDomain test5 = new ItemDomain(2, "name2", "address2");
ItemDomain test6 = new ItemDomain(2, "name3", "address3");
list.add(test1);
list.add(test2);
list.add(test3);
list.add(test4);
list.add(test5);
list.add(test6);
// 装换
Map<Integer, List<ItemDomain>> map = new HashMap<Integer, List<ItemDomain>>();
map = list4Map.list4Map(list);
System.out.println(map);
// 输出
list4Map.outOfMap(map);
}
/**
* @description 实现将一个List转化为Map<Key,List>的样式
* @param 某个对象的List
* @return Map<Key,List>
*/
public Map<Integer, List<ItemDomain>> list4Map(List<ItemDomain> list) {
Map<Integer, List<ItemDomain>> map = new HashMap<Integer, List<ItemDomain>>();
if ((list != null) && (list.size() != 0)) {
for (ItemDomain test : list) {
// 这一步是关键,也很巧妙吧,哈哈
List<ItemDomain> testList = map.get(test.getId());
if (testList == null) {
testList = new ArrayList<ItemDomain>();
}
testList.add(test);
map.put(test.getId(), testList);
}
}
return map;
}
/**
* @description 对Map<key,List>的数据结构进行遍历
* @param Map<key,List>
* @return void
*/
public void outOfMap(Map<Integer, List<ItemDomain>> map) {
Set<Integer> keySet = map.keySet();
for (Iterator<Integer> i = keySet.iterator(); i.hasNext();) {
Integer key = i.next();
System.out.println(key + " : ");
List<ItemDomain> testList = map.get(key);
for (ItemDomain test : testList) {
System.out.print("<--" + test.getName() + "--" + test.getAddress() + "-->");
}
System.out.println();
}
}
}