首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用父对象对链式对象排序

用父对象对链式对象排序
EN

Stack Overflow用户
提问于 2019-06-20 10:49:46
回答 2查看 120关注 0票数 0

我们有每个类别可以有父字段的类别列表,该字段引用当前类别的父类别。您能告诉我java中分类类别的最佳算法是什么,例如从上到下的分类吗?谢谢。

代码语言:javascript
复制
@Table
@Entity
public class Category {
     @Id
     Long id;
     @ManyToOne
     Category parent;
}

示例:

清单:

  • 类别(id=3,parent=Category(id=11))
  • 类别(id=4,parent=Category(id=3))
  • 类别(id=11,parent=Category(id=20,parent=null))

会像这样从上到下排序:

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

EN

回答 2

Stack Overflow用户

发布于 2019-06-20 11:14:21

假设你已经列出了。您可以使用Collections.sort()对列表进行排序;但是您的类必须做一些更改,因为您必须实现可比较的和覆盖compareTo()方法。这是一个例子,我希望它能帮助你。

代码语言:javascript
复制
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;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2019-06-20 14:10:45

我看不出分拣是怎么回事。

  1. 搜索没有父类的类别。
  2. 寻找它的孩子
  3. 后藤2

这给了你想要的名单。

备注:

如果每个父母都只有一个或没有一个孩子,那么您将得到一个列表,如您的示例中所示。(或多个列表)否则会得到一棵树(或多棵树)。

在“一个或没有子”的情况下,您可以通过字段child扩展您的类别,这使其成为一个双链接列表。在这种情况下,“搜索它的子”变得很简单,因为您有一个直接引用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56684396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档