Java List에서 Set 변환
1. List를 Set으로 변환
1) 일반 자바 사용
일반 Java를 사용하여 List를 Set으로 변환하는 방법이다.
1
2
3
4
public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = new HashSet<>(sourceList);
}
보시다시피 변환 프로세스는 각 컬렉션의 생성자가 다른 컬렉션을 소스로 받아들이기 때문에 형식이 안전하고 간단하다.
2) 구아바 사용
Guava를 사용하여 동일한 변환을 수행한다.
1
2
3
4
public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = Sets.newHashSet(sourceList);
}
3) Apache Commons Collections 사용
Apache의 Commons Collection API를 사용하여 List에서 Set으로 변환한다.
1
2
3
4
5
public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
List<Integer> sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set<Integer> targetSet = new HashSet<>(6);
CollectionUtils.addAll(targetSet, sourceList);
}
4) 자바 10
한 가지 추가 옵션은 Java 10에 도입된 Set.copyOf
정적 팩터리 메서드를 사용하는 것이다.
1
2
3
4
public void givenUsingJava10_whenListConvertedToSet_thenCorrect() {
List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
Set targetSet = Set.copyOf(sourceList);
}
이 방법으로 생성된 Set은 수정할 수 없다.
2. Set을 List로 변환
1) 일반 자바 사용
Java를 사용하여 Set에서 List로 역변환을 수행한다.
1
2
3
4
public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = new ArrayList<>(sourceSet);
}
2) 구아바 사용
Guava 솔루션을 사용하여 동일한 작업을 수행할 수 있다.
1
2
3
4
public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = Lists.newArrayList(sourceSet);
}
이것은 Java 접근 방식과 매우 유사하지만 중복 코드가 약간 적다.
3) Apache Commons Collections 사용
Set과 List 사이를 변환하는 Commons Collections 솔루션이다.
1
2
3
4
5
public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = new ArrayList<>(6);
CollectionUtils.addAll(targetList, sourceSet);
}
4) 자바 10
Java 10에 도입된 List.copyOf
를 사용할 수 있다.
1
2
3
4
public void givenUsingJava10_whenSetConvertedToList_thenCorrect() {
Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
List<Integer> targetList = List.copyOf(sourceSet);
}
결과 List는 수정할 수 없다.
[출처 및 참고]
This post is licensed under CC BY 4.0 by the author.