JAVA 8 lambda 表達式實現按某個屬性值查找對象集合中符合條件的對象
當前的需求是從數據庫或者其他服務中獲取到了一個對象集合,假設對象是Cart購物車,里面有product_id,product_name,count等。
需要從集合中查找商品id是1的商品對象。用表達式來查詢代碼很簡潔。
// Cart對象
@Data @JsonIgnoreProperties(ignoreUnknown = true) public class Cart { /** * 總庫商品ID */ @JsonProperty(value = "product_id") private Long productId; /** * 商品名稱 */ @JsonProperty(value = "name") private String productName; /** * 數量 */ @JsonProperty("count") private Integer count; }
模擬一個Cart集合,假設有兩個商品牛腩飯和蛋炒飯,id是1和2。
List<Cart> cartlist = new ArrayList<Cart> (2){{
Cart cart1 = new Cart();
cart1.setProductId(1L);
cart1.setProductName("牛腩飯");
cart1.setCount(1);
add(cart1);
Cart cart2 = new Cart();
cart2.setProductId(2L);
cart2.setProductName("蛋炒飯");
cart2.setCount(1);
add(cart2);
}};
Optional<Cart> cartOptional = cartlist.stream().filter(item -> item.getProductId().equals(1L)).findFirst();
if (cartOptional.isPresent()) {
// 存在
Cart cart = cartOptional.get();
} else {
// 不存在
}
