如果你想,如果它的大小超過n個元素返回列表,您可以使用collectingAndThen
收集:
List<Integer> list =
intList.stream()
.filter(i -> i > 40)
.collect(collectingAndThen(toList(), l -> { if (l.isEmpty()) throw new WhatEverRuntimeException(); return l;}));
但是它可能不是爲可讀,因爲它得到,所以你可以簡單地,如果添加採集後的結果聲明:
List<Integer> list = intList.stream().filter(i -> i > 40).collect(toList());
if (list.isEmpty()) {
throw new WhatEverRuntimeException();
}
最後,如果尺寸下限是,比方說,100,你可能不希望生成列表。在這種情況下,你可以使用兩個流管道,一個算滿足元素的數量必然會設置越低,一個真正生成列表:
long count = intList.stream().filter(i -> i > 40).count();
if(count < limit) {
throw new WhatEverRuntimeException();
}
List<Integer> list = intList.stream().filter(i -> i > 40).collect(toList());
使用這種方法有一個限制,我們不能從它返回一個列表。 – eatSleepCode
@eatSleepCode在這種情況下,您需要收集列表並在之後檢查它。一個流只能產生一個結果。 –