개인코딩공부방

java collection 객체에서 배열로, 배열에서 collection 객체로 본문

프로그래밍 언어/JAVA

java collection 객체에서 배열로, 배열에서 collection 객체로

atlasia 2019. 1. 11. 10:31

               //collection인 queue 자료형 선언
               Queue nodeQueue = new LinkedList();



                /*
                                Integer 자료형의 collection을 int 배열로 변환
                */

                int[] tempNodes = nodeQueue.stream().mapToInt(Integer::intValue).toArray();

		

                /*
                                Integer 자료형의 collection을 Integer(혹은 동일 자료형으로 변환)
                */

               //변환에 필요한 자료형 선언
               Integer[] tempNodes2 = new Integer[nodeQueue .size()];
               
                 //collection을 배열로 변환
	        tempNodes2 = nodeQueue .toArray(tempNodes2);

		//배열 정렬
                Arrays.parallelSort(tempNodes2);

                //배열을 collection생성자에 입력
		nodeQueue = new LinkedList<>(Arrays.asList(tempNodes2));



코딩을 하다보면 Collection객체(Queue, list, map)을 배열로 변환해야되는 경우가 생긴다. 

String을 담는 Collection객체면 너도 나도 자연스럽게 처리하면 되지만 

Collection객체는 Wrapper Class만 허용하기 때문에 기본 제공하는 toArray()함수는 Object[] 를 반환한다. 

따라서 형태를 직접적으로 int[] 같은 int 배열로 변환은 힘들다.


이를 해결하는 방법은 2가지가 있는데, 하나는 사용할 Collection객체의 Interface를 상속받거나 익명객체(Anonymous Instance)를 통한 구현,

 또 하나는 기본 제공 라이브러리를 통해 꾸역꾸역 하는 방식이다.


코드의 첫번째 예제는 Collection을 강제적으로 primitive Type 배열로 변환하는 방식이다.

내가 필요한건 기본자료형 배열인데 자꾸 Object배열만 허용하니 StackOverFlow 형님들 한테 배워온 코드이다.

이렇게 하면 어찌저찌 기본자료형은 되지만 Wrapper Class를 그대로 받아와야 하는 경우가 있다.

이때 쓰는 방법은 바로 다음 코드에 있다. 

예를들어 Collection내부의 자료를 정렬해야하는 경우가 그 경우다. 

이 예제는 1. Collection-> 배열 변환, 2. 배열 정렬, 3. 배열 -> Collection으로 변환이다.

'프로그래밍 언어 > JAVA' 카테고리의 다른 글

JAVA Reflection Tool  (0) 2018.04.02
JAVA/JDK 다운로드 하기 +환경변수 path 설정  (0) 2018.03.27
Comments