Перейти к основному содержимому

Краткое руководство по повторению карты в Groovy

· 2 мин. чтения

1. Введение

В этом кратком руководстве мы рассмотрим способы перебора карты в Groovy с использованием стандартных функций языка, таких как each , eachWithIndex и цикл for-in .

2. Каждый метод

Представим, что у нас есть следующая карта:

def map = [
'FF0000' : 'Red',
'00FF00' : 'Lime',
'0000FF' : 'Blue',
'FFFF00' : 'Yellow'
]

Мы можем перебирать карту, предоставляя каждому методу простое замыкание:

map.each { println "Hex Code: $it.key = Color Name: $it.value" }

Мы также можем немного улучшить читаемость, дав имя входной переменной:

map.each { entry -> println "Hex Code: $entry.key = Color Name: $entry.value" }

Или, если мы предпочитаем обращаться к ключу и значению отдельно, мы можем перечислить их отдельно в нашем закрытии:

map.each { key, val ->
println "Hex Code: $key = Color Name $val"
}

В Groovy карты, созданные с литеральной записью, упорядочены. Мы можем ожидать, что наш вывод будет в том же порядке, что и в нашей исходной карте.

3. Метод eachWithIndex

Иногда мы хотим знать индекс во время итерации.

Например, предположим, что мы хотим сделать отступ для каждой второй строки на нашей карте. Чтобы сделать это в Groovy, мы будем использовать метод eachWithIndex с входными и индексными переменными:

map.eachWithIndex { entry, index ->
def indent = ((index == 0 || index % 2 == 0) ? " " : "")
println "$index Hex Code: $entry.key = Color Name: $entry.value"
}

Как и в случае с каждым методом, мы можем использовать переменные ключа и значения в нашем закрытии вместо записи :

map.eachWithIndex { key, val, index ->
def indent = ((index == 0 || index % 2 == 0) ? " " : "")
println "$index Hex Code: $key = Color Name: $val"
}

4. Использование цикла For-in

С другой стороны, если наш вариант использования лучше подходит для императивного программирования, мы также можем использовать оператор for-in для перебора нашей карты:

for (entry in map) {
println "Hex Code: $entry.key = Color Name: $entry.value"
}

5. Вывод

В этом кратком руководстве мы узнали, как перебирать карту с помощью методов Groovy each и eachWithIndex и цикла for-in .

Код примера доступен на GitHub .