У меня проблема с сортировкой строк из БД, имеющих древовидную иерархию. Каждая строка содержит три столбца, значимых для этой проблемы: id, parent, lp. Id - String, parent - другая строка, а lp - число, используемое для сортировки строк, не имеющих отношения родитель-потомок. В каждой строке может быть любое количество детей и только один родитель (ноль на верхнем уровне)
Я вижу три ситуации:
- когда первая строка является родительской для другой: -1 возвращается
- когда первая строка является дочерней по отношению к родителю с более низким lp, чем другая строка ::
-1 возвращается
- когда ни одно из этих отношений не существует (также, когда строки имеют одного и того же родителя и находятся на одном уровне): сравниваются lps строк
Мне удалось написать этот код, который, по моему мнению, должен решить проблему, но он не работает для строк с глубокой иерархией и нарушает порядок:
dane = dane.sort {it1, it2 ->
it1 == it2.parent ? -1 :
it1.parent && it1.parent.lp < it2.lp ? -1 :
it1.lp - it2.key.lp
}
Буду признателен за любые предложения. Спасибо заранее!