我有一個對象列表和一個數組。我的數組有少量客戶選擇的ID(字符串)。我的對象有一個屬性ID。我想通過一組ID來過濾我的列表。有沒有一種方法可以使用謂詞或lambda來過濾它?如何用ID數組過濾對象列表?
public class PaymentDueData {
private long paymentScheduleId;
private String invoiceNumber;
}
String [] selectedInvoices;
我有一個對象列表和一個數組。我的數組有少量客戶選擇的ID(字符串)。我的對象有一個屬性ID。我想通過一組ID來過濾我的列表。有沒有一種方法可以使用謂詞或lambda來過濾它?如何用ID數組過濾對象列表?
public class PaymentDueData {
private long paymentScheduleId;
private String invoiceNumber;
}
String [] selectedInvoices;
首先,我會變成數組selectedInvoices
成Set<String>
以提高查詢:
HashSet<String> invoices = new HashSet<>(Arrays.asList(selectedInvoices));
然後,你需要檢查存在元素ID爲data.getInvoiceNumber()
的集合:
(...)
.stream()
.filter(data -> invoices.contains(data.getInvoiceNumber()))
.collect(Collectors.toList());
爲什麼轉換爲哈希集?你可以簡單地使用它作爲流。 –
沒錯。但爲什麼不簡單地使用Arrays.binarySearch? –
是啊!我在內存方面想。 –
您是否只希望包含與選定發票匹配的付款數據,或將其排除? – azurefrog
包含與所選發票匹配的付款數據 – karim