본문 바로가기
  • 꾸준히 앞으로
언어 log/Java

[Java] Array to List, List to Array

by lijly 2020. 6. 13.

 

 

막상 사용하려면 기억이 안 나서 찾게 되는 아이들 🤪

 

Array → List


1. 가장 단순한 for문

list.add(value);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    String[] arr = {"A", "B", "C", "D"};

    List<String> list = new ArrayList<>();
    for(String v:arr){
      list.add(v);
    }
  }
}

 

 

2. 간결한 메소드 asList() ✨

List<String> list = Arrays.asList(arr);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    String[] arr = {"A", "B", "C", "D"};

    List<String> list = Arrays.asList(arr);
  }
}

 

 

3. Collection 패키지 사용 addAll() ✨

Collections.addAll(list, arr);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    String[] arr = {"A", "B", "C", "D"};

    List<String> list = new ArrayList<>(); 
  
    Collections.addAll(list, arr);
  }
}

 

 

4. 익숙하다면, stream

stream은 시간이 가장 오래 걸리기 때문에 거의 사용하지 않게 되는 것 같다.

게다가 구구절절한 것 같기도 해서 잘 안 써지는 것 같다.

List<String> list = Arrays.stream(arr).collect(Collectors.toList());

예시

import java.util.*;
import java.util.stream.*; 

class Main {
  public static void main(String[] args) {
    String[] arr = {"A", "B", "C", "D"};

    List<String> list = Arrays 
							            .stream(arr) 
							            .collect(Collectors.toList());
  }
}

 

 

 

List → Array


1. 가장 단순한 for문

실행 시간은 가장 빠르다!

arr[i] = list.get(i);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>(); 
    list.add("A"); 
    list.add("B"); 
    list.add("C"); 
    list.add("D"); 

    String[] arr = new String[list.size()]; 

    // ArrayList to Array
    for (int i =0; i < list.size(); i++) 
      arr[i] = list.get(i); 
  }
}

 

 

2. 간결한 메소드 toArray ✨

String[] arr = list.toArray(new String[0]);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>(); 
    list.add("A"); 
    list.add("B"); 
    list.add("C"); 
    list.add("D"); 

    // ArrayList to Array
    String[] arr = list.toArray(new String[0]); 
  }
}

 

toArray() 메소드는 Object(Object[])타입을 반환한다.

따라서 아래와 같이 타입캐스트를 해주지 않으면 컴파일 에러가 난다!

...
		String[] arr = list.toArray();
...
👉🏽
Main.java:16: error: incompatible types: Object[] cannot be converted to String[]
    String[] arr = list.toArray();
                                            ^
1 error

int[], boolean[] 등의 원시형 사용도 당연히 안된다
Integer[], Boolean[] 등과 같은 객체형을 넣어줘야한다.

 

3. 간결하지만 시간 오래 걸리는 stream

stream은 시간이 오래 걸리기 때문에 거의 사용하지 않게 되는 것 같다.

String[] arr = list.stream().toArray(String[] ::new);

예시

import java.util.*;
class Main {
  public static void main(String[] args) {
    List<String> list = new ArrayList<>(); 
    list.add("A"); 
    list.add("B"); 
    list.add("C"); 
    list.add("D"); 

    // ArrayList to Array
    String[] arr = list.stream().toArray(String[] ::new);
  }
}

 

 

 

'언어 log > Java' 카테고리의 다른 글

[Java] JVM(Java Virtual Machine) 구조  (0) 2020.09.10
[Java] Array copy 배열 복사/복제  (0) 2020.05.31

댓글