본문 바로가기
TIL

자바 char 배열을 List로 변환하기(Stream으로 변환하기)

by 도쿠니 2022. 3. 29.

char 배열을 List로 바꿔서 사용하고 싶은데 자꾸 안돼서 stream으로 변환해서 바꾸려고 했었다.

 

char[] arr = {'a','b','c'};

// Arrays.asList(arr) 는 List<char[]> 로 반환해서 내가 원하던게 아니었다.
// Arrays.stream(arr) 에러발생!!!
// 만약 int 배열이라면 IntStream으로 변환이 가능했을텐데 char는 그게 안된다.

 

안되길래 찾아보니 char는 원시타입이기 때문에 Stream으로 변경 불가능하고 래퍼 클래스로 감싸줘야 한단다.

그래서 그냥 ArrayList하나 만든 후 for each를 통해서 add로 하나씩 넣어줬다.

ArrayList<Character> list = new ArrayList<>();

for (char c : arr) {
	// new Character(c) 는 deprecated 되었으니 Character의 static 메소드인 valueOf를 사용했다.
     list.add(Character.valueOf(c));
}

해결 완료! 

 

되도록이면 원시타입들 래퍼클래스로 감싸서 사용하는게 좋을 것 같다.

댓글