2013-12-17 37 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); 
    } 
} 
相關問題