[Java/자바] 배열(Array)을 리스트(List)로 변환

이번 포스팅에선 배열 [ ] 을 List로 변환하는 방법을 설명하고자 합니다.

이 내용을 이해하기 위해선 기본형과 참조형에 대한 이해가 필요합니다.

 

기본형과 참조형에 대해 알고 싶으시다면 아래 포스팅을 참고하시면 됩니다.

 

Java - 변수의 타입 (기본형과 참조형)

data의 type 우리가 주로 사용하는 값 ( data ) 의 종류 ( type )은 크게 "문자와 숫자"로 나눌 수 있으며, 숫자는 다시 "정수와 실수"로 나눌 수 있습니다. 이런 값( data )의 종류 ( type )에 따라 값이 저장

hstory0208.tistory.com

 


String[ ] ↔ List로 변환

String[ ]배열을 List로 변환
import java.util.*;
import java.util.Arrays;

public class AA {
	public static void main(String[] args) {
		String[] array = new String[3];
		array[0] = "사자";
		array[1] = "호랑이";
		array[2] = "고양이";
		
		/* for 문 이용 */
		List<String> list = new ArrayList<>();
		for(String str : array) {
			list.add(str);
		}
		System.out.println("list 1 = " + list);
		
		/* Arrays.asList() 메서드 이용 */
		ArrayList<String> list2 = new ArrayList<>(Arrays.asList(array));
		System.out.println("list 2 = " + list2);
	}
}

위 코드를 array 배열의 타입은 String 타입으로 참조형 타입이고, list의 타입 또한 참조형 타입 String입니다.

두 타입이 일치하기 때문에 String 배열의 경우 List로 변환 시 Arrays.asList(array)로 String[] 배열의 값을 그대로 복사할 수 있습니다.

 

List를 String[ ] 배열로 변환

또한 역으로 List의 toArray() 메서드를 이용해 String배열로 바꿀 수도 있습니다. 

import java.util.ArrayList;
import java.util.Arrays;

public class AA {
	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();
		list.add("사자");
		list.add("호랑이");
		list.add("고양이");

		System.out.println("list = " + list);
		
		String[] array = list.toArray(new String[list.size()]);
		System.out.println("array = " + Arrays.toString(array));
	}
}


int[ ] List로 변환

int[ ] 배열을 List로 변환
import java.util.ArrayList;
import java.util.List;

public class AA {
	public static void main(String[] args) {
		int[] array = { 3, 6, 9, 12 };
		
		List<Integer> list = new ArrayList<>();
		for(int i : array) {
			list.add(i);
		}
		System.out.println(list);
	}
}

 

array 배열의 타입은 int로 기본형이며, list의 타입은 Interger로 참조형입니다.

두 타입이 서로 다르기 때문에 Arrays.asList()로 배열의 값을 List로 옮길 수 없습니다.

그렇기 때문에 for문을 통해 array 배열의 값들을 list에 넣어줍니다.

 

List를 int[ ] 배열로 변환

역으로 List를 array로 바꾼다면 다음과 같이 for문을 이용합니다.

향상된 for문을 사용시 IndexOutOfBoundsException 예외가 발생합니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AA {
	public static void main(String[] args) {
		
		List<Integer> list = new ArrayList<>();
		list.add(3);
		list.add(6);
		list.add(9);
		list.add(12);

		int[] arr = new int[list.size()];
		for(int i = 0; i < list.size(); i++) {
			arr[i] = list.get(i);
		}
		System.out.println(Arrays.toString(arr));
	}
}


char[ ] List로 변환

char[ ] 배열을 List로 변환
import java.util.List;
import java.util.ArrayList;

public class AA {
	public static void main(String[] args) {
		char[] newArr = {'A', 'B', 'C'};
		List<Character> list = new ArrayList<>();
        for(char c : newArr) {
        	list.add(c);
		}
		System.out.println(list);
	}
}

array 배열의 타입은 char로 기본형이며, list의 타입은 Character로 참조형입니다.

두 타입이 서로 다르기 때문에 Arrays.asList()로 배열의 값을 List로 옮길 수 없습니다.

int[]와 마찬가지로, for문을 통해 array 배열의 값들을 list에 넣어줍니다.

 

 

List를 char[ ] 배열로 변환

역으로 List를 array로 바꾼다면 다음과 같이 for문을 이용합니다.

향상된 for문을 사용시 IndexOutOfBoundsException 예외가 발생합니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class AA {
	public static void main(String[] args) {
		
		List<Character> list = new ArrayList<>();
		list.add('A');
		list.add('B');
		list.add('C');

		char[] arr = new char[list.size()];
		for(int i = 0; i < list.size(); i++) {
			arr[i] = list.get(i);
		}
		System.out.println(Arrays.toString(arr));
		
	}
}