首页 > 解决方案 > 使用父对象对链式对象进行排序

问题描述

我们有类别列表,其中每个类别都可以具有父字段,该字段引用当前类别的父类别。你能告诉我java中对类别进行排序的最佳算法是什么,例如从上到下的类别?谢谢你。

@Table
@Entity
public class Category {
     @Id
     Long id;
     @ManyToOne
     Category parent;
}

样本:

清单:

将像这样从上到下排序:

类别(id=20)-> 类别(id=11)-> 类别(id=3)-> 类别(id=4)

在此处输入图像描述

标签: javaalgorithmsortingdata-structures

解决方案


假设你有列表。您可以使用 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;
    }
}

推荐阅读