循环遍历 java.util.List 并填充 java.util.Map



有一个类'Category':

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

然后,java.util.List<Category> categories是类别实例的列表。如您所见,一个类别对象可以是其他类别(类别和子类别概念)的父对象。我想遍历此列表并创建一个包含(类别对象,子类别列表到类别对象)的映射。如何实现此循环?

这个怎么样?

    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);
    }

但是我会使用集合而不是列表。甚至更好:番石榴的多地图。

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

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);
    }
}

相关内容

最新更新