我有一个对象列表和一个数组。我的数组中有几个客户选择的ID(字符串)。我的对象有一个属性ID。我想通过一系列ID过滤我的列表。有没有办法可以使用谓词或lambda过滤它?
public class PaymentDueData {
private long paymentScheduleId;
private String invoiceNumber;
}
String [] selectedInvoices;
答案 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());