Как объединить два потока пар, разделяющих равный элемент - PullRequest
0 голосов
/ 21 мая 2018

Я хочу объединить (сжать) следующие потоки:

s1 = [1, A], [2, B], [3, C]

s2 = [1,X], [3, XX]

и получить:

result = [1, Pair (A, X)], [2, Pair (B, null)], [3,Pair (C, XX)]

Есть ли чистый и эффективный способ сделать это?

Заранее благодарим за любую помощь.

1 Ответ

0 голосов
/ 30 мая 2018

Я думаю, что нашел ответ в https://blog.jooq.org/2015/08/13/common-sql-clauses-and-their-equivalents-in-java-8-streams. То, что я хотел, было внутренним соединением.Как то так:

s1
  .flatMap(v1 -> s2
                   .filter(v2 -> v1.left().equals(v2.left()))
                   .map(v2 -> Pair.of(v1, Pair.of(v1.right(), v2.right())))
...