Đồng nghiệp của tôi và tôi đã gặp lỗi do chúng tôi cho rằng một cuộc gọi luồng trống allMatch()
sẽ quay trở lại false
.
if (myItems.allMatch(i -> i.isValid()) {
//do something
}
Tất nhiên, đó là lỗi của chúng tôi khi giả sử và không đọc tài liệu. Nhưng điều tôi không hiểu là tại sao allMatch()
hành vi mặc định cho một luồng trống lại trả về true
. Lý do cho điều này là gì? Giống như anyMatch()
(trái ngược với trả về false), thao tác này được sử dụng theo cách bắt buộc rời khỏi đơn nguyên và có thể được sử dụng trong một if
câu lệnh. Xem xét những thực tế đó, có lý do gì tại sao việc allMatch()
mặc định true
trên một luồng trống lại được mong muốn cho phần lớn các mục đích sử dụng?
allMatch
trả về true thì đúng như vậyanyMatch
. Ngoài ra, đối với trường hợp trống,allMatch(...) == noneMatch(...)
điều này cũng rất lạ.