catsridingCATSRIDING|OCEANWAVES
Dev

Java 배열과 List<T> 컬렉션 간 변환하기

jynn@catsriding.com
Nov 08, 2023
Published byJynn
999
Java 배열과 List<T> 컬렉션 간 변환하기

Convert between Array and List in Java

알고리즘 문제를 보면 int[] 또는 char[]와 같은 Arrays 타입이 자주 등장합니다. 실제 업무에서는 주로 Java의 Collections Framework 및 Stream API를 활용해서 그런지 현실과의 간격이 조금 발생하는 것 같습니다. 알고리즘 대회에 나갈 것이 아니다 보니...🙄

이번 포스팅에서는 Java의 Arrays을 List<T>로, List<T>를 다시 Arrays로 변환하는 방법에 대해 살펴봅니다.

Prerequisite

Java 17을 기반으로 하며, 타입 변환하는 방법이 많겠지만 주로 Stream API를 활용하였습니다.

Converting int Array ⇆ List of Integer

int[]List<Integer>를 서로 변환합니다.

int Array → List of Integer

int[]List<Integer>로 변환합니다.

int[] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

List<Integer> list = Arrays.stream(array)  
        .boxed()  
        .toList();
  • Arrays.stream(T[] array): 파라미터로 전달된 배열을 기반으로 IntStream으로 변환하여 반환합니다.
  • boxed(): int 타입을 Integer 타입으로 감싼 다음 Stream 타입으로 반환합니다.
  • toList(): Stream 요소들을 모아 List<T> 타입으로 반환합니다.

List of Integer → int Array

List<Integer>int[]로 변환합니다.

List<Integer> list = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

int[] array = list.stream()  
        .mapToInt(Integer::intValue)  
        .toArray();
  • mapToInt(): IntStream을 반환합니다.
  • toArray(): Stream 요소들을 배열에 담아 반환합니다.

Converting String Array ⇆ List of String

String[]List<String>을 서로 변환합니다.

String Array → List of String

String[]List<String>으로 변환합니다.

String[] array = {"A", "B", "C", "D"};  

List<String> list = Arrays.stream(array).toList();

List of String → String Array

List<String>String[]로 변환합니다.

List<String> list = List.of("A", "B", "C", "D");

String[] array = list.toArray(new String[0]);
  • new String[list.size()]: 배열을 생성할 때, 배열의 사이즈를 지정하는 것이 일반적입니다. 하지만 JVM 최적화 측면에서 new String[0]을 사용하는 것이 더 효과적이다고 합니다.

Converting char Array ⇆ List of String

char[]List<String>을 서로 변환합니다.

char Array → List of String

char[]List<String>으로 변환합니다.

char[] array = {'a', 'b', 'c', 'd'};

List<String> list = new String(array)  
        .chars()  
        .mapToObj(Character::toString)  
        .toList();

List of String → char Array

List<String>char[]로 변환합니다.

List<String> list = List.of("A", "B", "C", "D");

char[] chars = list.stream()  
        .collect(Collectors.joining())  
        .toCharArray();
  • Java
  • Algorithm