我们有每个类别可以有父字段的类别列表,该字段引用当前类别的父类别。您能告诉我java中分类类别的最佳算法是什么,例如从上到下的分类吗?谢谢。
@Table
@Entity
public class Category {
@Id
Long id;
@ManyToOne
Category parent;
}示例:
清单:
会像这样从上到下排序:
类别(id=20) ->类别(id=11) ->类别(id=3) ->类别(id=4)

发布于 2019-06-20 11:14:21
假设你已经列出了。您可以使用Collections.sort()对列表进行排序;但是您的类必须做一些更改,因为您必须实现可比较的和覆盖compareTo()方法。这是一个例子,我希望它能帮助你。
public class Category implements Comparable<Category>{
Long id;
Category parent;
// Constructors getters setters
public int compareTo(Category aux){
// Assuming you want to sort by parent's id, and I understand a category
// maybe doesn't have parent it may be null
if(aux.getParent() != null && this.parent != null){
if(aux.getParent().getId() > this.parent.getId()) return -1;
else if(aux.getParent().getId() < this.parent.getId()) return ;
return 0;
}
if(aux.getParent() == null && this.parent.getId() == null) return 0;
if(aux.parent() == null) return 1;
return 0;
}
}发布于 2019-06-20 14:10:45
我看不出分拣是怎么回事。
这给了你想要的名单。
备注:
如果每个父母都只有一个或没有一个孩子,那么您将得到一个列表,如您的示例中所示。(或多个列表)否则会得到一棵树(或多棵树)。
在“一个或没有子”的情况下,您可以通过字段child扩展您的类别,这使其成为一个双链接列表。在这种情况下,“搜索它的子”变得很简单,因为您有一个直接引用它。
https://stackoverflow.com/questions/56684396
复制相似问题