Объединение 2 списков с потоками в Groovy - PullRequest
0 голосов
/ 19 июня 2019

Скажем, у меня есть два списка одинакового размера [1, 2, 3, 4, ...] и [a, b, c, d, ...].Есть ли способ сделать карту с потоками, которая отображает 1 в a, 2 в b, 3 в c и т. Д., Не используя лямбда-функции или вложенные функции?

Я бы использовал map и передал функцию, но эта переданная функция может принимать только 1 аргумент, и мне нужны обе части информации для сопоставления элементов друг с другом.

IntStream(1, list1.size()).stream().map(this.&combineListsFunction).collect...

combineListsFunction может использовать только информацию из потока, но мне нужны оба списка для работы функции.

1 Ответ

1 голос
/ 19 июня 2019

Вы можете транспонировать оба списка (который даст вам список кортежей, а затем создать карту из него с помощью collectEntries() (который принимает именно это). Например ::1002*

def l1 = [1,2,3]
def l2 = ["a","b","c"]

assert [(1): "a", (2): "b", (3): "c"] == [l1,l2].transpose().collectEntries()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...