Trong khi chơi đùa với Java8 của Streams-API, tôi stumbled trên như sau:Sử dụng Streams với các loại nguyên thủy dữ liệu và tương ứng với giấy gói
Để chuyển đổi một loạt các classe wrapper nguyên thủy đối tượng vào một Stream
Tôi chỉ phải gọi Stream.of(array)
. Nhưng để chuyển đổi một mảng các kiểu dữ liệu nguyên thủy, tôi phải gọi .of(array)
từ lớp dòng trình bao (lớp) tương ứng (< - có vẻ ngớ ngẩn).
Một ví dụ:
final Integer[] integers = {1, 2, 3};
final int[] ints = {1, 2, 3};
Stream.of(integers).forEach(System.out::println); //That works just fine
Stream.of(ints).forEach(System.out::println); //That doesn't
IntStream.of(ints).forEach(System.out::println); //Have to use IntStream instead
Câu hỏi của tôi (s): Tại sao điều này? Điều này có tương quan với ví dụ: hành vi của Arrays.asList()
cũng chỉ hoạt động cho các mảng lớp bao bọc?
Không phải là nó bình thường sử dụng phương pháp IntStream để đối phó với IntStreams, và phương pháp Suối để đối phó với Streams? –
Bạn cũng có thể sử dụng 'Arrays.stream (ints) .forEach (System.out :: println)'. – skiwi
@skiwi Điều đó thực sự rất hay. Cảm ơn – ifloop