Tôi đang cố gắng tìm intersection
trong hai danh sách dựa trên một số điều kiện và thực hiện một số bước. không thể tìm thấy một cách để làm điều đó (trong giai đoạn học tập) :)Java 8 Lambda - Giao điểm của hai danh sách
Double totalAmount = 0.00d;
Double discount = 0.00d;
List<OrderLineEntry> orderLineEntryList = orderEntry.getOrderReleases().stream().flatMap(orderReleaseEntry ->
orderReleaseEntry.getOrderLines().stream()).filter(orderLineEntry -> orderLineEntry.getStatus().equals("PP")
|| orderLineEntry.getStatus().equals("PD")).collect(Collectors.toList());
for (OrderLineEntry orderLineEntry : orderLineEntryList) {
for (SplitLineEntry splitLineEntry : splitReleaseEntry.getLineEntries()) {
if (splitLineEntry.getOrderLineId().equals(orderLineEntry.getId()) && splitLineEntry.getStatusCode() !=
"PX") {
totalAmount += orderLineEntry.getFinalAmount();
couponDiscount += orderLineEntry.getCouponDiscount() == null ? 0.00d : orderLineEntry.getCouponDiscount();
}
}
}
Như bạn thấy, logic rất đơn giản
Nhận Tất cả các mục từ theo thứ tự dựa trên một số bộ lọc list
và giao nhau với list
khác và làm một số thứ.
Cách hiệu quả nhất để tìm giao lộ là sử dụng Tập hợp hoặc Bản đồ. Tôi đề nghị bạn xây dựng một tập hợp bằng cách thu thập một nhóm thích hợp. –
@PeterLawrey, Bạn có thể giúp tôi đạt được điều tương tự với Lambda không. Tôi đang tạo danh sách chỉ để tìm giao lộ. Mã hóa Java điển hình, tôi sẽ sử dụng 'Bản đồ' :) – Reddy