이번 포스팅에선 배열 [ ] 을 List로 변환하는 방법을 설명하고자 합니다.
이 내용을 이해하기 위해선 기본형과 참조형에 대한 이해가 필요합니다.
기본형과 참조형에 대해 알고 싶으시다면 아래 포스팅을 참고하시면 됩니다.
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));
}
}
'◼ JAVA' 카테고리의 다른 글
[Java/자바] HashSet과 HashMap의 차이점 (0) | 2022.11.01 |
---|---|
[Java/자바] HashMap 클래스 사용법 (0) | 2022.11.01 |
[Java/자바] TreeSet 사용법 (0) | 2022.10.31 |
[Java/자바] HashSet 클래스 사용법 (2) | 2022.10.31 |
[Java/자바] Comparator와 Comparable (1) | 2022.10.31 |