Ответ 1
Это поведение по умолчанию со всеми коллекциями, кроме массивов в groovy.
assert [1,2,3,4][5] == null
def test = new ArrayList()
assert test[100] == null
assert [1:"one", 2:"two"][3] == null
Если у вас есть массив, включите его в список.
def realArray = new Object[4]
realArray[100] // throws exception
(realArray as List)[100] // null
Вы можете индексировать список и индексы карт вместе с оператором ?
так же, как со свойствами:
def myList = [[name: 'foo'], [name: 'bar']]
assert myList[0]?.name == 'foo'
assert myList[1]?.name == 'bar'
assert myList[2]?.name == null