Далее возвращается список всех тележек в списке, которые содержат указанные идентификаторы продукта. Включен класс OrderLineDTO
для выполнения демонстрации.
Map<String, List<OrderLineDTO>> allCarts = new HashMap<>();
List<String> cart = new ArrayList<>(); // also contains fetched data for example ["Product01", "Product02"]
cart.add("ID7");
cart.add("ID1");
allCarts.put("cart1", List.of(new OrderLineDTO("ID1"),
new OrderLineDTO("ID2")));
allCarts.put("cart2", List.of(new OrderLineDTO("ID3"),
new OrderLineDTO("ID5")));
allCarts.put("cart3", List.of(new OrderLineDTO("ID3"),
new OrderLineDTO("ID4")));
allCarts.put("cart4", List.of(new OrderLineDTO("ID6"),
new OrderLineDTO("ID7")));
List<String> carts = allCarts.entrySet().stream()
.filter(e -> e.getValue().stream().anyMatch(
prod -> cart.contains(prod.getProductId())))
.map(e -> e.getKey()).collect(Collectors.toList());
System.out.println(carts);
Отпечатки
[cart1, cart4]
class OrderLineDTO {
String id;
public OrderLineDTO(String id) {
this.id = id;
}
public String getProductId() {
return id;
}
public String toString() {
return id;
}
}
}