如何通过ID数组过滤对象列表?

时间:2017-10-10 16:31:59

标签: java java-8

我有一个对象列表和一个数组。我的数组中有几个客户选择的ID(字符串)。我的对象有一个属性ID。我想通过一系列ID过滤我的列表。有没有办法可以使用谓词或lambda过滤它?

public class PaymentDueData {

    private long paymentScheduleId;
    private String invoiceNumber;

}

String []  selectedInvoices;

2 个答案:

答案 0 :(得分:1)

首先,我会将数组selectedInvoices转换为Set<String>以增强查找效果:

HashSet<String> invoices = new HashSet<>(Arrays.asList(selectedInvoices));

然后,您需要检查集合中是否存在元素data.getInvoiceNumber()

(...)
    .stream()
    .filter(data -> invoices.contains(data.getInvoiceNumber()))
    .collect(Collectors.toList());

答案 1 :(得分:-1)

最喜欢这样的事情:

 paymentDueDataCollection.stream()
                         .filter(x -> Arrays.stream(selectedInvoices)
                               .anyMatch(y -> y.equals(x.getInvoiceNumber()))
                         .collect(Collectors.toList());