Левое внешнее объединение с использованием Seq, Tuple и Streams с использованием jool java 8 - PullRequest
2 голосов
/ 20 сентября 2019

У меня есть два списка клиентов и адрес, которые имеют pmtxnid в качестве общего значения.Я хочу использовать jool (java 8) метод leftouterjoin, но я не знаю о правильном синтаксисе.Также нет примера, с помощью которого я могу понять это проще.Пожалуйста, помогите, если кто-нибудь знает о Seq, Tuples jool с java 8 Streams.

List<Customers> customers = new ArrayList<Customers>();
    customers.add(new Customers(16079391, 12, "A")); // NULL
    customers.add(new Customers(16079392, 13, "B")); // 2
    customers.add(new Customers(16079393, 14, "C")); // NULL
    customers.add(new Customers(16079394, 15, "D")); // BIll
    customers.add(new Customers(16079395, 16, "E")); // 1

    List<Address> addresses = new ArrayList<Address>();
    addresses.add(new Address(1, 16079392, "bangalore", "karnataka"));
    addresses.add(new Address(2, 16079392, "chennai", "tamil nadu"));
    addresses.add(new Address(3, 16079392, "hyderabad", "telanagana"));
    addresses.add(new Address(4, 16079395, "indore", "mp"));
    addresses.add(new Address(5, 16079395, "kanpur", "up"));

Seq<List<Customers>> s1 = Seq.of(customers);
    Seq<List<Address>> s2 = Seq.of(addresses);

Я пробовал приведенный ниже код, но безуспешно.

Seq<Tuple2<Seq<List<Customers>>, Seq<List<Address>>>> loj=  Seq.of(s1).leftOuterJoin(Seq.of(s2), (t, u) -> Objects.equals(t, u));

1 Ответ

1 голос
/ 20 сентября 2019

Предполагая, что общее значение pmtxnid доступно с использованием Customers#getPmtxnid() и Address#getPmtxnid() соответственно, вызов leftOuterJoin() должен выглядеть примерно так:

var result = Seq.of(s1).leftOuterJoin(Seq.of(s2),
    (c, a) -> Objects.equals(c.getPmtxnid(), a.getPmtxnid()));

Обратите внимание, что Objects#equals() необходимо толькоесли любой из объектов может иметь null pmtxnid.

...