#groovy
#groovy
Вопрос:
У меня есть такой массив:
def arr = [
"v3.1.20161004.0",
"v3.1.20161004.1",
"v3.1.20161004.10",
"v3.1.20161004.11",
"v3.1.20161004.2",
"v3.1.20161004.3",
"v3.1.20161004.30",
]
Мне нужно получить это:
def arr = [
"v3.1.20161004.0",
"v3.1.20161004.1",
"v3.1.20161004.2",
"v3.1.20161004.3",
"v3.1.20161004.10",
"v3.1.20161004.11",
"v3.1.20161004.30",
]
Как отсортировать его по последнему номеру ‘.x’?
Ответ №1:
Вы можете маркировать каждую строку .
, а затем использовать последний элемент как целое число и сортировать по этому (передавая false
, чтобы вернуть новый список)
def newArray = arr.sort(false) { it.tokenize('.')[-1] as Integer }
Комментарии:
1. Спасибо! Это великолепное решение!
Ответ №2:
При сортировке массива вы можете определить закрытие сортировки. В этом случае вы можете разделить на точки и отсортировать с помощью оператора spaceship:
arr.sort { a, b -> a.tokenize('.').last().toInteger() <=> b.tokenize('.').last().toInteger() }
Комментарии:
1. Спасибо за быстрый ответ, для меня это полезно.