重写自引用对象上的compareTo(父/子关系)

发布于 2024-12-12 09:22:09 字数 539 浏览 0 评论 0原文

我正在尝试在 grails 中的域类上实现compareTo,以便我可以返回SortedSet。我希望我的排序集按父名称排序,然后按“子”名称排序。例如(P=父级,C=子级):

  • P-1
    • C-1
    • C-2
  • P-2
    • C-3
    • C-4

我的类看起来像这样:

class Issue implements Comparable {
 String name
 Issue parent

@Override
public int compareTo(obj){
  if(obj.parent!=null && this.parent!=null){
   parent.name.compareTo(obj.parent.name)
  }else{
      //What do I compare to sort the children relative to their parents?
  }
}

I'm trying to implement compareTo on a domain class in grails so I can return a SortedSet. I want my sorted set to be ordered by parent name, then by "child" name. For example (P=parent, C=child):

  • P-1
    • C-1
    • C-2
  • P-2
    • C-3
    • C-4

My class looks something like this:

class Issue implements Comparable {
 String name
 Issue parent

@Override
public int compareTo(obj){
  if(obj.parent!=null && this.parent!=null){
   parent.name.compareTo(obj.parent.name)
  }else{
      //What do I compare to sort the children relative to their parents?
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

老旧海报 2024-12-19 09:22:09

如果您要寻找的只是排序集,那么仅在问题上实现 Comparable 并在映射上使用排序顺序就足够了吗?

class Issue implements Comparable {
 String name
 Issue parent
 SortedSet children

 static hasMany = [children : Issue]
 static belongsTo = [parent : Issue]
 static mapping = {
    sort 'name'
    children sort:'name'
 }    

@Override
public int compareTo(obj){
  if(obj){
    this.name?.compareTo(obj.name)
  }
}

If all you're looking for is sorted sets, would just implementing Comparable on Issue and using sort orders on the mappings suffice?

class Issue implements Comparable {
 String name
 Issue parent
 SortedSet children

 static hasMany = [children : Issue]
 static belongsTo = [parent : Issue]
 static mapping = {
    sort 'name'
    children sort:'name'
 }    

@Override
public int compareTo(obj){
  if(obj){
    this.name?.compareTo(obj.name)
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文