자바에서 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);
}
'Language > Java' 카테고리의 다른 글
자바 addAll 으로 list에 배열, 다른 list, set을 넣는 방법 (0) | 2021.10.06 |
---|---|
자바 String.charAt 을 String으로 받는 방법 (0) | 2021.10.05 |
자바 Calendar를 이용해 쿼리 between 처럼 사용방법 (0) | 2021.07.05 |
자바 String 줄 바꾸는(개행) 방법 (0) | 2021.05.28 |
자바 홀수 짝수 구분방법 정리 (0) | 2021.05.25 |
댓글