Lists
Lists are mutable Java ArrayLists by default. GDK methods without side effects (e.g., toSorted, toUnique) return new lists.
def list = [1, 2, 3] // java.util.ArrayList
def empty = []
def linked = [1, 2] as LinkedList
def fixed = [1, 2, 3].asImmutable() // or List.of(1, 2, 3)
list << 4 // append
list += [5, 6] // new list with elements added
list.add(0, 0)
list.addAll([7, 8])
list -= [7, 8] // remove elements (by value)
list.remove(0) // by index (for an int argument)
list.removeElement(3) // by value (Groovy 2.5+)
println list[0], list[-1], list[1..2], list[-2..-1], list.first(), list.last(), list.head(), list.tail()
println list.size(), list.isEmpty(), list.contains(2), 2 in list, list.indexOf(4)
list[10] = 99 // auto-grows, filling with nulls
println list.findAll { it != null }
println [3, 1, 2].sort(), [3, 1, 2].sort(false), ['bb', 'a'].sort { it.size() }
println [1, 2, 2, 3].unique(), [1, 2, 2, 3].toUnique(), [1, [2, [3]]].flatten()
println [1, 2, 3].reverse(), [1, 2, 3].sum(), [1, 2, 3].max(), [1, 2, 3].min()
println [1, 2, 3].join("-"), [1, 2, 3] * 2, [1, 2] + [3]
println [1, 2, 3, 4].collate(2), [1, 2, 3, 4, 5].split {
…