어제 오늘 내일

[Java] Map을 배열, List, Set으로 변환하기 본문

IT/Java

[Java] Map을 배열, List, Set으로 변환하기

hi.anna 2021. 5. 19. 10:48

 

지난번에는 ArrayList을 HashMap으로 변환하는 방법을 알아보았습니다.

[Java] ArrayList를 HashMap으로 변환하기

 

이번에는 Map을 배열로, List로, Set으로 변환하는 방법을 소개합니다.

  1. Map을 배열로 변환하기
  2. Map을 List로 변환하기
  3. Map을 Set으로 변환하기

 

 

1. Map을 배열로 변환하기

Map의 value 값을 새로운 배열에 담습니다.

import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

public class MapConvert {
    public static void main(String[] args) {
        
        // Map 준비
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Apple");
        map.put(2, "Banana");
        map.put(3, "Orange");

        // Map -> 배열
        Collection<String> values = map.values();
        String[] arr = values.toArray(new String[0]);

        // 결과 출력
        System.out.println(Arrays.toString(arr));  // [Apple, Banana, Orange]
    }
}

Collection<String> values = map.values();

map.values() 메소드를 통해서 Map의 모든 값들을 가진 Collection 객체를 받아옵니다.

 

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

이 Collection 객체의 toArray() 메소드를 사용하여, Collection 객체를 배열로 변환합니다.

이때, 파라미터로는 새로 만들어질 배열이 들어가는데,

배열의 길이는 생성될 배열의 길이로 지정해 주어야 합니다.

즉, 여기서는 map이 3개의 element를 가지고 있으므로 아래와 같이

길이가 3인 새로운 배열을 파라미터로 넘겨줘야 합니다.

values.toArray(new String[3]);

하지만, 길이가 0인 배열을 넘기면 자동으로 변환될 배열의 길이가 정해집니다.

따라서, 위 코드에서는 파라미터로 전달되는 배열의 길이를 0으로 하였습니다.

 

 

 

2. Map을 List로 변환하기

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class MapConvert {
    public static void main(String[] args) {
        
        // Map 준비
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Apple");
        map.put(2, "Banana");
        map.put(3, "Orange");

        // Map -> List
        Collection<String> values = map.values();
        List<String> list = new ArrayList<>(values);

        // 결과 출력
        System.out.println(list);  // [Apple, Banana, Orange]
    }
}

List<String> list = new ArrayList<>(values);

ArrayList의 생성자의 파리미터로 map의 value값을 가지는 Collection 객체를 넘겨주어서

Map을 List로 변환하였습니다.

 

 

3. Map을 Set으로 변환하기

import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class MapConvert {
    public static void main(String[] args) {

        // Map 준비
        Map<Integer, String> map = new HashMap<>();
        map.put(1, "Apple");
        map.put(2, "Banana");
        map.put(3, "Orange");

        // Map -> Set
        Collection<String> values = map.values();
        Set<String> set = new HashSet<>(values);

        // 결과 출력
        System.out.println(set); // [Apple, Banana, Orange]
    }
}

Set<String> set = new HashSet<>(values);

List와 마찬가지로,

Map의 value값을 가지는 Collection 객체를

HashSet의 생성자의 파라미터로 넘겨주어서,

Map 객체의 value 데이터로 Set 객체를 생성하였습니다.

 

 

 

반응형
Comments