как отсортировать заводные значения списка по некоторым критериям - PullRequest
0 голосов
/ 17 июня 2011

У меня есть один сценарий для сортировки значений на основе свойства класса домена. Это свойство может принимать все числовые и буквенно-цифровые значения в формате XXX-1.

 def res= Book.listOrderByName()

или

 def res = Book.findAll("from Book order by name")

При выдаче одинакового результата и результата отображаются первые цифры, а затем буквенно-цифровые значения. Моя проблема: эти значения отсортированы до -. Например, у меня есть AB-1, AB-2, ... AB-12.

Результат отображается как AB-1, AB-10.AB-11, AB-2, AB-3, .. AB-9

У меня есть результат как:

  [18001,18002,2,300,3901,42,9,AB-1,AB-10,AB-2,AB-21,AB-9]

Значение должно отображаться как:

  [2,9,42,300,3901,18001,18002,AB-1,AB-2,AB-9,AB-10,AB-21]

1 Ответ

7 голосов
/ 17 июня 2011

Запустите это в Groovy консоли :

List sort(list) {

  list.sort {a, b ->
    a.class == b.class ? a <=> b : a instanceof Integer ? -1 : 1
  }
}

// Test the sort function
def list = [18001,18002,2,300,3901,42,9,'AB-1','AB-10','AB-2','AB-21','AB-9']
assert sort(list) == [2, 9, 42, 300, 3901, 18001, 18002, 'AB-1', 'AB-10', 'AB-2', 'AB-21', 'AB-9']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...