💻IT/Java

[Java] Convert Array to List / Convert List to Array

gom20 2021. 10. 18. 19:05

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