需求
Java Stream 判斷List元素的屬性是否包含指定的值該怎么實現?
代碼實現
直接上代碼
public class OrderInfo {private BigDecimal fee;private String orderStatus;
}public class ListTest2 {public static void main(String[] args) {OrderInfo orderInfo = new OrderInfo();orderInfo.setFee(new BigDecimal(10));orderInfo.setOrderStatus("create");OrderInfo orderInfo2 = new OrderInfo();orderInfo2.setFee(new BigDecimal(20));orderInfo2.setOrderStatus("finish");List<OrderInfo> list1 = new ArrayList<>();list1.add(orderInfo);list1.add(orderInfo2);boolean anyExist = list1.stream().anyMatch(e -> "create".equals(e.getOrderStatus()));boolean allExist = list1.stream().allMatch(e -> "create".equals(e.getOrderStatus()));System.out.println(anyExist);System.out.println(allExist);}
}
輸出結果:
true
false
語法說明
(1).stream()表示返回一個以本集合為數據源的順序流。
(2).anyMatch()是Java 8 Stream API中的終端操作方法,用于判斷流中是否存在至少一個元素滿足指定條件。只要檢測到第一個匹配元素即終止計算,后續元素不再處理,并返回true。
(3).allMatch()是Java 8 Stream API中的終端操作方法,用于檢查流中所有元素是否均滿足指定條件。當流中所有元素均滿足條件時返回true,方法返回true;否則遇到第一個不滿足條件的元素即返回false。