4. ArrayList와 Array간 변환
2018. 7. 3. 23:13
ArrayList와 Array간 변환
Array와 ArrayList는 Java에서 매우 많이 사용되어지는 자료구조이다. 이름은 유사하지만, 자료 구조의 특성이 다르기 때문에 변환하는 작업이 직관적이지는 않다.
1. Array를 ArrayList로 변환
많은 개발자가 Arrays.asList(array)
메소드를 사용해 array를 ArrayList로 변환한다. 하지만, 이 메소드는 가변적인 사이즈를 지원하는 ArrayList와 다른 클래스를 반환한다. 그러므로 다른 방법이 필요하다.
1.1 ArrayList 생성시 Arrays.asList() 메소드 사용
가장 많이 선호되는 방법이다.
- List<> list = new ArrayList<>(Arrays.asList(array));
예를 들어 Class의 instance를 저장한 array의 경우는 다음과 같이 쉽게 변환 가능하다.
String [] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>(Arrays.asList(array));
System.out.println(list); //[one, two, three]
int와 같은 primitive type의 경우는 안타깝게도 위와 같이 할 수 없다. 아래와 같이 하나씩 옮겨야 한다.
int[] array = {1, 2, 3};
List<Integer> list = new ArrayList<>();
for(int i : array) {
list.add(i);
}
System.out.println(list); //[1, 2, 3]
1.2 Collections.addAll() 메소드 사용
source와 destination을 일종의 복사를 하는 방식이다. 이 역시 안타깝데도 primitive type의 경우는 사용할 수 없다.
- Collections.addAll(list, array)
String [] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>();
Collections.addAll(list, array);
System.out.println(list); //[one, two, three]
1.3 List 인터페이스의 addAll() 메소드 사용
List의 addAll() 메소드를 사용하는 방식이다. 이 역시 안타깝데도 primitive type의 경우는 사용할 수 없다.
- list.addAll(Arrays.asList(array))
String [] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(array));
System.out.println(list); //[one, two, three]
1.4 Java 8의 Stream 사용하기
Java 8의 Stream에 대해서는 따로 정리된 내용을 확인하자.
- List list = Arrays.stream(array).collect(Collectors.toList())
이 역시 안타깝데도 primitive type의 경우는 사용할 수 없다.
String [] array = new String[] {"one", "two", "three"};
List<String> list = Arrays.stream(array).collect(Collectors.toList());
System.out.println(list); //[one, two, three]
2. ArrayList를 Array로 변환
아주 간단하다. Array를 크기에 맞게 생성 후 List 인터페이스의 toArray() 메소드를 사용해서 복사하면 된다.
- list.toArray(array)
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
String [] array = new String[list.size()];
list.toArray(array);
for(String s: array){
System.out.println(s);
}
결과는 다음과 같다.
one
two
three
출처: http://hochulshin.com/java-arraylist/
'Get IT Note > Java' 카테고리의 다른 글
6. String, StringBuffer, StringBuilder 의 차이점 (0) | 2018.07.04 |
---|---|
5. 불변객체와 가변객체 (0) | 2018.07.04 |
3. 예외처리 (0) | 2018.07.03 |
2. 난수(Random) (0) | 2018.07.01 |
1. 배열 (0) | 2018.07.01 |