[JAVA] - ArrayList에서 배열로, 배열에서 ArrayList로

프로그래밍을 하다보면 데이터 자료구조를

변환해야 할 때가 있다. 오늘 포스팅은

ArrayList or List <-> 배열(Array)로 변환하는걸 

다루어본다.


중요한건 자료구조를 바꾸는 것이지 자료형은 일치해야 한다는것이다.

아래의 예시는 가장 많이 쓰이는 String 클래스 자료형을 이용한 변환 예제이다.


1. List -> Array(배열)

ex ) for문.

ArrayList<String> arrayList = new ArrayList<>();

arrayList.add("Test1");
arrayList.add("Test2");
arrayList.add("Test3");

String[] array = new String[arrayList.size()];
int size=0;
for(String temp : arrayList){
  array[size++] = temp;
}



윗 for문 방식은 arrayList (리스트) 데이터를 for문을 통해 순서데로 String 배열에 넣는다.

아래의 방식은 List에서 제공하는 메서드를 이용한 방식이다.


ex ) List에서 제공하는 메서드 사용.


ArrayList<String> arrayList = new ArrayList<>();

arrayList.add("Test1");
arrayList.add("Test2");
arrayList.add("Test3");

String[] array = arrayList.toArray(new String[arrayList.size()]);



2. Array(배열) -> List

ex ) for문


String[] array = new String[3];

array[0] = "Test1";
array[1] = "Test2";
array[2] = "Test3";

ArrayList<String> arrayList = new ArrayList<>();
for(String temp : array){
  arrayList.add(temp);
}



1번의 for문 예시와 같은 원리이다. 아래의 방식은 Arrays에서 제공하는 메서드를 이용한다.
.
ex )Arrays 메서드 사용,

String[] array = new String[3];

array[0] = "Test1";
array[1] = "Test2";
array[2] = "Test3";

ArrayList<String> arrayList = new ArrayList<>(Arrays.asList(array));



예시는 String으로 했지만, 모든 자료형이 가능하다. 중요한건 바꿀 자료구조끼리 자로형이 같아야한다.

원리는 for문이나 변환을 위해 제공되는 메서드나 똑같다.

하지만, 제공되는 메서드를 사용할시 코드를 간편하게 작성할 수 있는 장점이 있고, 더군다나

JAVA8 에서는 좀더 간단하게 표현 할 수 도 있다.


따라서, 알아두면 유용하게 쓰일 것이다.


출처: http://mommoo.tistory.com/32 [개발자로 홀로 서기]

댓글