我有一个与亲子关系的产品清单。
我想按父子层次结构对列表进行排序。
预期列表id
的顺序:
[1,3,4,5,2,6]
我已经尝试了一种适用于一级父级子级但不适用于多级父子级关系的实现。
list.sort(new Comparator<Product>() {
@Override
public int compare(Product p1, Product p2) {
int priortyP1, priortyP2;
if (p1.getParentId() == null) {
priortyP1 = p1.getId() * 1000;
} else {
priortyP1 = p1.getParentId() * 1000 + p1.getId();
}
if (p2.getParentId() == null) {
priortyP2 = p2.getId() * 1000;
} else {
priortyP2 = p2.getParentId() * 1000 + p2.getId();
}
return priortyP2 - priortyP1;
}
});