Предположим, что мы начинаем с такого списка:
def list = ["154515 Sawgrass",
"170985 Mexico APIs for Payments",
"153026 CitiCards Consumer and Business Account Online (authenticated pgs) No CSI App ID",
"153890 GC Citibank Online - Singapore IPB v3",
"144564 Citibank Online (CBOL) US, Zack Dummy CSI #3",
"171706 Quip",
"167518 GC Eclipse [Teller]",
"167518 GC Eclipse [Signature]"]
Затем мы можем начать с нового списка и набора значений:
def listUniqueValues = []
def valuesAlreadySeen = new HashSet()
Затем мы перебираем список проверяя, находится ли текущее значение в наборе «ранее увиденных» значений:
list.each { item ->
def value = item.split(" ")[0]
if (! valuesAlreadySeen.contains(value)) {
listUniqueValues << item
}
valuesAlreadySeen << value
}
, тогда мы можем отсортировать listUniqueValues
и вывести:
listUniqueValues.sort() { a,b -> a <=> b }.each { println it }
, чтобы получить
144564 Citibank Online (CBOL) US, Zack Dummy CSI #3
153026 CitiCards Consumer and Business Account Online (authenticated pgs) No CSI App ID
153890 GC Citibank Online - Singapore IPB v3
154515 Sawgrass
167518 GC Eclipse [Teller]
170985 Mexico APIs for Payments
171706 Quip
ПРИМЕЧАНИЕ: это не самый эффективный метод и не самый "Grooviest" (есть способ круче с методом inject
). Но это просто и, надеюсь, легко понять.