java - 使用父对象对链式对象进行排序
问题描述
我们有类别列表,其中每个类别都可以具有父字段,该字段引用当前类别的父类别。你能告诉我java中对类别进行排序的最佳算法是什么,例如从上到下的类别?谢谢你。
@Table
@Entity
public class Category {
@Id
Long id;
@ManyToOne
Category parent;
}
样本:
清单:
- 类别(id=3,父=类别(id=11))
- 类别(id=4,父=类别(id=3))
- 类别(id=11,父=类别(id=20,父=null))
将像这样从上到下排序:
类别(id=20)-> 类别(id=11)-> 类别(id=3)-> 类别(id=4)
解决方案
假设你有列表。您可以使用 Collections.sort() 对该列表进行排序;但是你的类必须改变一点,因为你必须实现 Comparable 并覆盖 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;
}
}
推荐阅读
- android - Not able to link github private repository to jcenter in bintray
- javascript - 如何计算为数组元素+1
- javascript - 从特定的 Javascript 生成 v4 UUID
- opencv - 使用 OpenCV 绘制连接对象质心的线
- java - 如何使用java代码重启eclipse的tomcat服务器
- reactjs - 反应数据表中的按钮 onClick 事件不起作用
- java - org.jso.JSONException 值 type.java.lang.string 无法转换为 jsonobject
- java - 如何在 JOptionPane.showMessageDialog 中插入版权符号?
- python - 根据 pandas 中的列和条件对值进行分组
- ios - 尝试存储数据时我的代码出错