Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 ArrayList<String>과 ArrayList<Object>를 상호 변환하는 방법


ArrayList<String>을 ArrayList<Object>로 변환하기

제네릭의 타입 매개변수(T) 대신 알 수 없는 타입을 의미하는 물음표(?)를 사용할 수 있습니다. 이것을 '와일드카드(wildcard)'라고 하며, 메서드 매개변수의 타입, 필드, 지역 변수 등에 활용할 수 있습니다. 와일드카드를 이용하면 ArrayList<String>을 다음과 같이 변환할 수 있습니다.

ArrayList<String> stringList = (ArrayList<String>)(ArrayList<?>)(list);

다만 이 방식은 unchecked cast 경고가 발생할 수 있으며, 리스트에 문자열이 아닌 요소가 포함되어 있다면 런타임에 ClassCastException이 발생할 수 있으므로 주의해서 사용해야 합니다.

예제

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListExample {
    public static void main(String args[]) {
        // ArrayList 객체 생성
        ArrayList<Object> list = new ArrayList<Object>();
        // 리스트에 요소 추가
        list.add("apples");
        list.add("mangoes");
        list.add("oranges");
        // Object 타입의 ArrayList를 String 타입으로 변환
        ArrayList<String> stringList = (ArrayList<String>)(ArrayList<?>)(list);
        // 변환된 리스트의 내용 출력
        Iterator<String> it = stringList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

apples
mangoes
oranges

ArrayList<Object>를 ArrayList<String>으로 변환하기

반대로 ArrayList<String>을 ArrayList<Object>로 변환하는 것은 훨씬 간단합니다. 다음 두 단계만 거치면 됩니다.

  • String 타입의 ArrayList 객체를 생성하거나 이미 존재하는 객체를 준비합니다.

  • 해당 객체를 생성자의 인자로 전달하여 Object 타입의 새로운 ArrayList 객체를 생성합니다.

예제

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListExample {
    public static void main(String args[]) {
        // String 타입의 ArrayList 객체 생성
        ArrayList<String> stringList = new ArrayList<String>();
        // 리스트에 요소 추가
        stringList.add("apples");
        stringList.add("mangoes");
        stringList.add("oranges");
        // String 타입의 ArrayList를 Object 타입으로 변환
        ArrayList<Object> objectList = new ArrayList<Object>(stringList);
        // 원본 리스트의 내용 출력
        Iterator<String> it = stringList.iterator();
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

실행 결과

apples
mangoes
oranges