본문 바로가기
Language/Java

자바 배열 자료형 선언 시 다른 자료형에서 즉시 변환 방법

by wakestand 2021. 10. 5.
반응형

자바에서 array, list, set 기타등등

각종 배열 형태의 자료형을

Collection을 상속받는 자료형들로 서로 변환해줄 때

 

일반적으로는 for 문을 돌리면서

하나씩 다 넣어주는 방법을 사용하는데

이게 손도 많이가고 귀찮다

 

위 이미지의 방법으로 정말 간단하게 변환이 가능한데

 

예를 들어 Array, set, vector을 ArrayList로 변환한다고 해 보자

위 이미지를 참고해서

ArrayList<데이터타입> 리스트명 = new ArrayList<데이터타입>(변경할 자료형태 변수명);

을 해주면 간단하게 변환이 가능하다

 

이건 뭐 도라에몽도 아니고 넣기만 하면

바로 ArrayList<String> 타입으로

변환이 되는 것이 보이는데

구조를 한번 알아보자면

 

ArrayList의 생성자에서는

파라미터를 Collection 타입으로 받는데

 

Collection 타입은 Map을 제외하고는

다른 자료구조에서 모두 상속해서 사용하기 때문에

모든 자료구조 형태를 받을 수 있게 되는거다

(Array의 경우에는 Collection에 속하지 않기 때문에

Arrays.asList(배열명) 으로 List로 변경해서 사용)

 

이후 elementData라는 이름의 Object[] 배열에

모든 자료를 보관하게 되는데

 

생성자(객체 생성하자마자 하는거)

인 ArrayList(Collection< ...) 부분에서 toArray를 사용하여

바로 배열로 만들어버린 뒤

elementData에 넣어 사용하는 것이 보인다

 

즉 파라미터를 Collection으로 받은 후

Object 배열로 변경해서 보관하여 사용하는 구조기 때문에

선언 시 어떤 자료형을 넣어주건 간에

쉽게 변환이 가능한 것이다

(set, vector 등등도 구조는 위 이미지와 동일함)

 

마지막으로 예제에 사용한 코드는 아래와 같다

 

	public static void main(String[] args) {
		String[] array = {"1", "2", "3"};
		HashSet<String> set = new HashSet<String>();
		Vector<String> vector = new Vector<String>();
		
		ArrayList<String> list1 = new ArrayList<String>(Arrays.asList(array));
		ArrayList<String> list2 = new ArrayList<String>(set);
		ArrayList<String> list3 = new ArrayList<String>(vector);
	}
반응형

댓글