7
วิธีตรวจสอบว่า Java 8 Stream ว่างเปล่าหรือไม่?
ฉันจะตรวจสอบได้อย่างไรว่า a Streamว่างเปล่าและโยนข้อยกเว้นหากไม่ใช่เป็นการดำเนินการที่ไม่ใช่เทอร์มินัล โดยพื้นฐานแล้วฉันกำลังมองหาสิ่งที่เทียบเท่ากับโค้ดด้านล่าง แต่ไม่มีการระบุสตรีมระหว่างนั้น โดยเฉพาะอย่างยิ่งการตรวจสอบไม่ควรเกิดขึ้นก่อนที่สตรีมจะถูกใช้ไปจริงโดยการดำเนินการเทอร์มินัล public Stream<Thing> getFilteredThings() { Stream<Thing> stream = getThings().stream() .filter(Thing::isFoo) .filter(Thing::isBar); return nonEmptyStream(stream, () -> { throw new RuntimeException("No foo bar things available") }); } private static <T> Stream<T> nonEmptyStream(Stream<T> stream, Supplier<T> defaultValue) { List<T> list = stream.collect(Collectors.toList()); if (list.isEmpty()) list.add(defaultValue.get()); return list.stream(); }
100
java
java-8
java-stream