我有两个Lists Customer和Address,它们具有pmtxnid作为通用值。
我想使用jool(java 8)leftouterjoin方法,但是我不知道正确的语法。也没有一个示例可以使我以更简单的方式理解它。
如果有人知道Seq,Taples 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));

最佳答案

假设可以分别使用pmtxnidCustomers#getPmtxnid()访问公用的Address#getPmtxnid()值,那么leftOuterJoin()调用应如下所示:

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

注意,仅当两个对象中的任何一个都可以具有Objects#equals() pmtxnid时,才需要null

10-02 22:33