Post

Java Array에서 Set 변환

1. List를 Set으로 변환

1) 일반 자바 사용

일반 Java를 사용하여 Array를 Set으로 바꾸는 방법이다.

1
2
3
4
5
@Test
public void givenUsingCoreJavaV1_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<Integer>(Arrays.asList(sourceArray));
}

또는 Set을 먼저 만든 다음 Array 요소로 채울 수 있다.

1
2
3
4
5
6
@Test
public void givenUsingCoreJavaV2_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<Integer>();
    Collections.addAll(targetSet, sourceArray);
}

2) 구아바 사용

구아바를 사용하여 Array에서 Set으로 변환한다.

1
2
3
4
5
@Test
public void givenUsingGuava_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = Sets.newHashSet(sourceArray);
}

3) Apache Commons Collections 사용

Apache의 Commons Collection 라이브러리를 사용하여 변환한다.

1
2
3
4
5
6
@Test
public void givenUsingCommonsCollections_whenArrayConvertedToSet_thenCorrect() {
    Integer[] sourceArray = { 0, 1, 2, 3, 4, 5 };
    Set<Integer> targetSet = new HashSet<>(6);
    CollectionUtils.addAll(targetSet, sourceArray);
}

2. Set을 List로 변환

1) 일반 자바 사용

반대로 기존 Set을 Array로 변환하는 방법이다.

1
2
3
4
5
@Test
public void givenUsingCoreJava_whenSetConvertedToArray_thenCorrect() {
    Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    Integer[] targetArray = sourceSet.toArray(new Integer[0]);
}

toArray (new T[0])toArray(new T[size]) 보다 메서드를 사용하는 기본 방법이다. Aleksey Shipilëv가 자신의 블로그 게시물에서 증명했듯이 더 빠르고 안전하며 깨끗하다.

2) 구아바 사용

구아바 솔루션을 사용한다.

1
2
3
4
5
@Test
public void givenUsingGuava_whenSetConvertedToArray_thenCorrect() {
    Set<Integer> sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    int[] targetArray = Ints.toArray(sourceSet);
}

Guava의 Ints API를 사용하고 있으므로 이 솔루션은 작업 중인 데이터 유형에 따라 다르다.

[출처 및 참고]

This post is licensed under CC BY 4.0 by the author.