본문 바로가기
☕Java/Java 기본

자바 컬렉션 간 변환(Array, List, Map, Set) 정리

by 캔 2022. 10. 1.

배열, Collection 객체 간에 변환이 필요한 경우 사용할 수 있는 방법을 정리해보았다.

 

변환을 할 때 배열과 배열이 아닌 객체 간을 나눠서 볼 수 있다. 배열이 아닌 List, Map, Set으로 변환하는 경우에는 원래 객체를 파라미터로 받아 List, Map, Set 객체를 생성하는 방식으로 변환한다. 다만, 배열의 경우에는 List로 변환하여 넣어 주면 된다.

 

List, Map, Set 객체를 배열로 바꾸려고 할 때는 List, Map, Set 객체가 기본적으로 가진 toArray() 메서드를 이용하면 쉽게 배열로 바꿀 수 있다.

Array -> List

1. Arrays.asList(array)

* 원래 배열의 list 형태만 보여줌. 따라서 리스트 추가하는 것이 불가하고(추가 시 UnsupportedOperationExcetpion 발생함.) 원래 배열의 값이 변하면 list의 값도 변함.

 

2. new ArrayList<>(Arrays.asList(array))

 

3. Arrays.stream(array).collect(Collectors.toList())

* 자바 8 이후 도입된 Stream 사용함. 따라서 자바 8 이후 버전에서만 사용 가능.

Map -> List

Map은 key와 value로 구성된 entry들의 집합이므로 key list, value list 두 개의 list가 만들어진다.

1. new ArrayList<>(map.keySet())

    new ArrayList<>(map.valueSet())

 

2. map.keySet().stream().collect(Collectors.toCollection(ArrayList::new))

    map.valueSet().stream().collect(Collectors.toCollection(ArrayList::new));

Set ->List

1. new ArrayList<타입>(set)

Array -> Map

1. for 문으로 map에 key, value를 추가

 

2. Arrays.asList(array).stream().collect(Collectors.toMap(key, value))

* 자바 8 이후 도입된 Stream 사용함. 따라서 자바 8 이후 버전에서만 사용 가능.

List -> Map

1. for 문으로 map에 key, value를 추가

 

2. list.stream().collect(Collectors.toMap(key, value))

* 자바 8 이후 도입된 Stream 사용함. 따라서 자바 8 이후 버전에서만 사용 가능.

Set -> Map

1. for 문으로 map에 key, value를 추가

 

2. set.stream().collect(Collectors.toMap(x -> key, x-> value))

* 자바 8 이후 도입된 Stream 사용함. 따라서 자바 8 이후 버전에서만 사용 가능.

Array -> Set

1. new HashSet<타입>(Arrays.asList(array))

 

2. Arrays.stream(array).collect(Collectors.toSet())

* 자바 8 이후 도입된 Stream 사용함. 따라서 자바 8 이후 버전에서만 사용 가능.

List -> Set

1. new HashSet<타입>(list)

 

Map -> Set

1. new HashSet<타입>(map.keySet())

    new HashSet<타입>(map.valueSet())

List -> Array

1. list.toArray(new 배열 타입[배열의 길이])

* 배열의 길이는 0으로 해도 되며, 설정한 배열의 길이가 실제 리스트보다 작을 경우, 자동으로 리스트의 크기만큼 배열을 만들어 주며, 클 경우 비어있는 배열의 값은 null로 채워짐.

Map -> Array

1. map.keySet().toArray(new 배열 타입[배열의 길이])

* 배열의 길이는 0으로 해도 되며, 설정한 배열의 길이가 실제 리스트보다 작을 경우, 자동으로 리스트의 크기만큼 배열을 만들어 주며, 클 경우 비어있는 배열의 값은 null로 채워짐.

Set -> Array

1. set.toArray(new 배열 타입[배열의 길이])

* 배열의 길이는 0으로 해도 되며, 설정한 배열의 길이가 실제 리스트보다 작을 경우, 자동으로 리스트의 크기만큼 배열을 만들어 주며, 클 경우 비어있는 배열의 값은 null로 채워짐.