byte[] a = {1,2,3};
System.out.println(Stream.of(a).count());
Byte[] b = {1,2,3};
System.out.println(Stream.of(b).count());
결과가 1과 3 인 이유는 무엇입니까?Java 8 Stream.of 프리미티브 유형을 사용하면 결과가 혼동됩니다.
byte[] a = {1,2,3};
System.out.println(Stream.of(a).count());
Byte[] b = {1,2,3};
System.out.println(Stream.of(b).count());
결과가 1과 3 인 이유는 무엇입니까?Java 8 Stream.of 프리미티브 유형을 사용하면 결과가 혼동됩니다.
Stream.of
은 인수로 객체 만 받아들입니다. byte
은 개체가 아니지만 byte
배열입니다. a
이 byte
의 배열 인 경우 Stream.of(a)
은 "배열 인이 하나의 객체의 스트림"을 의미 할 수 있습니다.
배열이 Byte[]
인 경우 배열의 각 요소가 개체이므로 컴파일러에서 의미를 추측 할 수 있습니다.
당신이 바이트 배열 스트리밍 할 수있는 방법에 대한 여기에 정보가있다 : In Java 8, is there a ByteStream class?
프리미티브 배열의 경우 기본 스트림을 사용해야하지만 불행히도 ByteStream
은 없습니다. 당신이 당신의 byte[]
int[]
로 변경하는 경우, 당신은 쓸 수 :
int[] a = {1,2,3};
System.out.println(IntStream.of(a).count());
그렇지 않으면 당신이 누구의 단일 요소 입력 배열 인 Stream<byte[]>
를 얻을 모두 static<T> Stream<T> of(T t)
및 static<T> Stream<T> of(T... values)
가 Stream
요소로 참조 형식을 기대하기 때문에, 당신은 통과 그렇게 할 때 프리미티브 (primitive) 배열의 경우, 사용 가능한 유일한 참조 유형은 배열 자체입니다.
System.out.println(Stream.of(b).count());
케이스의 경우 b
은 참조 유형의 배열이므로 static<T> Stream<T> of(T... values)
은 3 개의 요소로 구성된 Stream<Byte>
을 생성하는 데 사용됩니다.
IntStream.of (바이트 []) 컴파일 오류를 가져올 것이다가. –
@yijiang 나는 그것을 놓쳤다. 나는'byte []'가 자동으로'int []'로 변환 될 수 없다고 생각하지 않았습니다. 나는 대답을 편집 할 것이다. 귀하의 설명을 위해 – Eran
3Q. –
Intream.of (byte [])는 컴파일 오류 –
@yijiang이 발생하므로 발생합니다. – khelwood
하지만 설명해 주시면 3Q에 도움이됩니다. –