有一个班级'类别':
public class Category
{
private Integer id;
private String name;
private Category parentCategory;
...
//getters and setters
}
然后,java.util.List<Category> categories
是一个Category实例列表。如您所见,一个类别对象可以是其他类别(类别和子类别概念)的父级。
我想遍历此列表并创建一个由(categoryObject,categoryObject的子类别列表)组成的映射。我该如何实现这个循环?
答案 0 :(得分:1)
这个怎么样?
final Map<Category,List<Category>> map = new HashMap<>();
for (Category cat : categories) {
if (cat.parentCategory == null) continue;
List<Category> children = map.get(cat.parentCategory);
if (children == null) {
children = new ArrayList<>();
map.put(cat.parentCategory, children);
}
children.add(cat);
}
但我会使用集合而不是列表。甚至更好:番石榴的多图。
答案 1 :(得分: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);
}
}