Java로 코딩테스트 풀다보면 Array를 List로, List를 Array로 변환할 일이 종종 생깁니다.
For문 사용은 제외하고 자주 쓰는 함수 정리합니다.
Array를 List로 변환하기
Arrays.asList() 함수를 사용하여 Array를 List로 변환할 수 있습니다.
// 1. Convert String[] to List<String> : Arrays.asList(String[])
String[] arr1 = new String[]{"A", "B", "C", "D"};
List<String> list1 = Arrays.asList(arr1);
for(String s : list1){
System.out.println(s);
}
List를 Array로 변환하기
1) List.toArray() 사용
List<String> list3 = new ArrayList<String>(){{
add("A");
add("B");
add("C");
add("D");
}};
String[] arr3 = list3.toArray(new String[0]);
for(String s : arr3){
System.out.println(s);
}
2) List.stream().toArray() 사용
- List<String> -> String[]
List<String> list4 = Arrays.asList("A", "B", "C", "D");
String[] arr4 = list4.stream().toArray(String[]::new);
for(String s : arr4){
System.out.println(s);
}
- List<Integer> -> int[]
List<Integer> list5 = new ArrayList<Integer>(){{
add(1);
add(2);
add(3);
add(4);
}};
int[] arr5 = list5.stream().mapToInt(x -> x).toArray();
for(int n : arr5){
System.out.println(n);
}
- List<Object> -> String[] or int[]
List<People> list6 = new ArrayList<People>(){{
add(new People("Kim", 10));
add(new People("Go", 16));
add(new People("Choi", 30));
add(new People("Park", 22));
}};
String[] arr6 = list6.stream().map(p -> p.name).toArray(String[]::new);
int[] arr7 = list6.stream().mapToInt(p -> p.age).toArray();
for(String s : arr6){
System.out.println(s);
}
for(int n : arr7){
System.out.println(n);
}
}
public static class People {
String name;
int age;
public People(String name, int age){
this.name = name;
this.age = age;
}
}
테스트 코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 1. Convert String[] to List<String> : Arrays.asList(String[])
String[] arr1 = new String[]{"A", "B", "C", "D"};
List<String> list1 = Arrays.asList(arr1);
for(String s : list1){
System.out.println(s);
}
// 2. Convert String[] to List<String> : Arrays.asList(String...)
List<String> list2 = Arrays.asList("A", "B", "C", "D");
for(String s : list2){
System.out.println(s);
}
// 3. Convert List<String> to String[] : List.toArray()
List<String> list3 = new ArrayList<String>(){{
add("A");
add("B");
add("C");
add("D");
}};
String[] arr3 = list3.toArray(new String[0]);
for(String s : arr3){
System.out.println(s);
}
// 4. Convert List<String> to String[] : List.stream().toArray()
List<String> list4 = Arrays.asList("A", "B", "C", "D");
String[] arr4 = list4.stream().toArray(String[]::new);
for(String s : arr4){
System.out.println(s);
}
// 5. Convert List<Integer> to int[] : List.stream().mapToInt(x->x).toArray()
List<Integer> list5 = new ArrayList<Integer>(){{
add(1);
add(2);
add(3);
add(4);
}};
int[] arr5 = list5.stream().mapToInt(x -> x).toArray();
for(int n : arr5){
System.out.println(n);
}
// 6. Convert List<Object> to int[] or String[] : List.stream().map().toArray()
List<People> list6 = new ArrayList<People>(){{
add(new People("Kim", 10));
add(new People("Go", 16));
add(new People("Choi", 30));
add(new People("Park", 22));
}};
String[] arr6 = list6.stream().map(p -> p.name).toArray(String[]::new);
int[] arr7 = list6.stream().mapToInt(p -> p.age).toArray();
for(String s : arr6){
System.out.println(s);
}
for(int n : arr7){
System.out.println(n);
}
}
public static class People {
String name;
int age;
public People(String name, int age){
this.name = name;
this.age = age;
}
}
}
'💻IT > Java' 카테고리의 다른 글
[Java] Java 8 Method Reference (메소드 참조) (0) | 2021.12.12 |
---|---|
[Java] Java 8 Functional Interface (0) | 2021.12.10 |
[Java] Java 8 Optional (0) | 2021.12.09 |
[Java] Java 8 Stream API (0) | 2021.12.03 |
[Java] Deque 자료 구조 (LinkedList 메소드) (0) | 2021.11.15 |