Giả sử bạn muốn truyền các phần tử của một trình lặp; chúng ta hãy sử dụng ví dụ cụ thể về một Scanner
, thực hiện Iterator<String>
.Cách đơn giản nhất để phát một trình lặp số
đưa ra một Iterator
, nói:
// Scanner implements Iterator<String>
Iterator<String> scanner = new Scanner(System.in);
Tùy chọn để tạo ra một Stream<String>
từ nó là phiền phức:
StreamSupport.stream(
Spliterators.spliteratorUnknownSize(scanner, Spliterator.ORDERED), false);
hoặc hơi ngắn gọn hơn, nhưng tù:
StreamSupport.stream(
((Iterable<String>)() -> new Scanner(System.in)).spliterator(), false);
Có phương pháp nhà máy nào đó trong JDK trả về mộtkhôngđược cung cấp một số Iterator<T>
?
Bạn bối rối tôi bằng cách nói 'new Scanner (System.in);// nó là một Iterable ' –
Holger
Không có cách nào đơn giản hơn nhưng điều này thực sự phổ biến là một cách đơn giản hơn là cần thiết? – Holger
@holger bởi vì 'lớp Máy quét thực hiện Iterator' và có, tôi thường muốn dòng các yếu tố của một iterator (không chỉ là máy quét tất nhiên, đó chỉ là một ví dụ của một của nó không phải là một bộ sưu tập) –
Bohemian