У меня есть массив массивов.
def my_array = [[null], [10382], [11901], [null], [10386], [10385], [11901], [10386], [11901], [10386], [3], [null], [10504], [3]]
Я хочу найти индекс ПЕРВОГО вхождения элемента, например [3].
Я использую findIndexOf.
def index = my_array.findIndexOf { it == [3] }
Однако это возвращает -1. Я думаю, что это индекс элемента в массиве [3], а не в массиве my_array. Как получить индекс элемента [3] в my_array?



Запуск этого кода:
def my_array = [[null], // index 0
[10382], // index 1
[11901], // index 2
[null], // index 3
[10386], // index 4
[10385], // index 5
[11901], // index 6
[10386], // index 7
[11901], // index 8
[10386], // index 9
[3], // index 10
[null], // index 11
[10504], // index 12
[3]] // index 13
def index = my_array.findIndexOf { it == [3] }
println "index: $index"
который идентичен вашему коду, приводит к:
~> groovy solution.groovy
index: 10
~>
на Java 8 и Groovy 2.1.16. Другими словами, ваш код должен работать.
Кстати, вам действительно нужен список списков? Поскольку все списки имеют длину один, вы можете просто иметь список элементов напрямую.
list.flatten() должен сделать это.
Спасибо. Я использую движок Jenkins Groovy. Могут быть некоторые различия в зависимостях. Чтобы ответить на ваш вопрос. Мне это действительно не нужно. Могу ли я легко преобразовать список списка в список вместо того, чтобы быть дорогим?