[Java] char[] 로 stream 생성하는 방법

나른한 개발자·2023년 6월 15일
0

char[]을 Integer List로 만들 필요가 있어 아래처럼 스트림을 생성하고자 했는데 에러가 발생했다.

String s = "abc";
char[] chars = s.toCharArray();
Arrays.stream(c);

알고보니 char[]로는 스트림을 곧바로 생성할 수 없었던 것이다. 자바 스트림은 IntStream, LongStream과 같이 스트림 클래스를 지원하는데, CharStream 클래스는 존재하지 않는다. 또한 char는 원시 타입이라 바로 스트림을 생성할 수 없다.

따라서 스트림을 생성하려면 Wrapper Class 에 해당하는 Character를 써주거나, String.chars()를 이용해야한다.

다음과 같이 수정하니, 원활하게 동작이 되었다.

List<Integer> arr = new String(chars)
                    	.chars()
                        .mapToObj(c -> Character.getNumericValue((char) c))
                       	.collect(Collectors.toList());
profile
Start fast to fail fast

0개의 댓글