Сравнение элементов в одной позиции двух списков с использованием потока Java 8 - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть два списка. Я хочу сравнить каждый элемент списка 1 с списком 2 и получить результат в списке 3, например:

List1 = {99,22,33}

list2 = {11,24,33}

Результат:

list3 = {1,-1,0}

Как я могу это сделать это предпочтительно с помощью потока?

1 Ответ

5 голосов
/ 05 апреля 2020

Попробуйте это так:

Заменяет поток ints, используемый для индексации каждого списка, результатом сравнения. Затем соберите их в список.

Примечание: я добавил защиту для учета списков разных размеров. Он будет использовать меньшее из двух значений, чтобы исключить исключение. Но конечные элементы более длинного списка будут игнорироваться.

List<Integer> list1 = List.of(99, 22, 33);
List<Integer> list2 = List.of(11, 24, 33);

// safeguard against different sized lists.
int minLen = Math.min(list1.size(), list2.size());
List<Integer> result = IntStream.range(0, minLen)
        .map(i -> list1.get(i).compareTo(list2.get(i)))
        .boxed().collect(Collectors.toList());

System.out.println(result);

Prints

[1, -1, 0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...