2013-12-17 38 views
-2

有一类“类别”:通过一个java.util.List循环和填充java.util.Map

public class Category 
{ 
private Integer id; 
private String name; 
private Category parentCategory; 
... 
//getters and setters 
} 

,然后,有java.util.List<Category> categories是在类别实例的列表。正如你所看到的,一个类别对象可以是其他类别(类别和子类别概念)的父类。 我想遍历这个列表并创建一个由(categoryObject,子类别列表到categoryObject)组成的映射。我怎样才能实现这个循环?

回答

1

这个怎么样?我想用一组而不是一个列表。甚至更好:番石榴的multimap。

0

也许这样的事情,在我附近没有编译器,所以他们可能是一个编译器错误或两个,但接近这应该工作。

Map<Category, List<Category> > myMap = new HashMap<Category, List<Category> >(); 

for (Category cat : categories) { 
    if (cat.parentCategory != null) { 
     List<Category> myList; 
     if (myMap.get(cat.parentCategory) == null) { 
      myList = new ArrayList<Category>(); 
     } else { 
      myList = myMap.get(cat.parentCategory); 
     } 
     myList.add(cat); 
     myMap.put(cat.parentCategory, myList); 
    } 
} 
相关问题