【发布时间】:2016-10-18 16:14:09
【问题描述】:
我有一个List<Hotel>,每个Hotel都有一个BigDecimal minSellingPrice,我想以最低售价获得Hotel。
我可以通过这段代码实现这一点
hotels.stream().min((h1, h2) -> h1.getMinSellingPrice().compareTo(h2.getMinSellingPrice())).get()
但是如果列表中的 3 家酒店有共同的最低售价,那么列表中有 50 家酒店,最低的 minSellingPrice 是 100,50 家酒店中有 3 家酒店的 minSellingPrice 是 100。
我如何获得这 3 家酒店的列表,以便对它们进行操作?我唯一想到的是通过map 和min 获得最低价格,然后在列表中查询价格最低的商品,但这听起来不太好。
【问题讨论】:
-
过滤
hotels.stream()以获得您在上面得到的值。从技术上讲,您只需要遍历一次,因为这里不需要回溯。如果发现多次出现,可能会创建一个自定义过滤器添加到另一个列表中。
标签: java java-stream