Переопределение CompareTo для объекта, ссылающегося на себя (отношения родитель / потомок) - PullRequest
0 голосов
/ 29 октября 2011

Я пытаюсь реализовать CompareTo для класса домена в Grails, чтобы я мог вернуть 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?
  }
}

1 Ответ

3 голосов
/ 29 октября 2011

Если все, что вам нужно, - это отсортированные наборы, достаточно ли просто реализации Comparable on Issue и использования порядков сортировки для сопоставлений?

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)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...