Java/배열

[Java]배열을 TreeSet으로 변환

DevStory 2022. 4. 6.

이번 포스팅은 Java에서 배열을 TreeSet으로 변환하는 몇 가지 방법들을 소개합니다.


배열을 TreeSet으로 변환

다음은 배열을 TreeSet 클래스로 변환하기 전에 미리 알고있어야 하는 내용입니다. 배열을 TreeSet으로 변환할 때 배열의 요소가 숫자 타입인 경우 오름차순으로 자동 정렬하며 문자열인 경우 사전 순서대로 자동 정렬합니다.

 

TreeSet은 Set 인터페이스를 구현한 클래스입니다. 그렇기 때문에 중복 요소를 허용하지 않습니다.


반복문 사용

가장 간단한 방법은 배열을 반복하여 TreeSet 객체에 요소를 하나씩 추가하는 것입니다.

Integer[] intArray = new Integer[]{2, 5, 3, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>();

for (Integer num : intArray) {
  tSetInt.add(num);
}

System.out.println("TreeSet: " + tSetInt);

실행 결과

TreeSet: [1, 2, 3, 4, 5]

TreeSet 생성자 사용

TreeSet 생성자는 컬렉션 객체를 인수로 가질 수 있습니다. 컬렉션 객체를 인수로 전달하기 위해서는 먼저 배열을 컬렉션 객체로 변환해야 합니다. Arrays 클래스의 asList() 메서드를 호출하여 배열을 Arrays 클래스로 변환합니다.

Integer[] intArray = new Integer[]{2, 5, 3, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>(
        Arrays.asList(intArray)
);

System.out.println("TreeSet: " + tSetInt);

실행 결과

TreeSet: [1, 2, 3, 4, 5]
반응형

TreeSet의 addAll() 메서드 사용

TreeSet의 addAll() 메서드는 컬렉션 객체의 모든 요소를 TreeSet 객체에 추가합니다. 컬렉션 객체를 전달해야하므로 배열을 컬렉션 객체로 변환합니다.

Integer[] intArray = new Integer[]{2, 5, 3, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>();

tSetInt.addAll(Arrays.asList(intArray));

System.out.println("TreeSet: " + tSetInt);

실행 결과

TreeSet: [1, 2, 3, 4, 5]

 

만약 다음 예제처럼 addAll() 메서드에 전달된 컬렉션 객체의 요소에 null이 존재하는 경우 NullPointerException이 발생합니다.

Integer[] intArray = new Integer[]{2, 5, null, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>();

tSetInt.addAll(Arrays.asList(intArray));

System.out.println("TreeSet: " + tSetInt);

컬렉션의 addAll() 메서드 사용

TreeSet의 addAll() 메서드 대신 Collections 클래스의 addAll() 메서드를 사용할 수 있습니다. 첫 번째 인수로 TreeSet 객체를 두 번째 인수로 배열을 전달합니다.

Integer[] intArray = new Integer[]{2, 5, 3, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>();

Collections.addAll(tSetInt, intArray);

System.out.println("TreeSet: " + tSetInt);

실행 결과

TreeSet: [1, 2, 3, 4, 5]

TreeSet의 addAll() 메서드와 마찬가지로 배열의 요소에 null이 존재하는 경우 NullPointerException이 발생합니다.


Apache Commons CollectionUtils 클래스

Apache Commons 라이브러리를 사용하는 경우 CollectionUtils 클래스의 addAll() 메서드를 사용하여 배열을 TreeSet 객체로 변환할 수 있습니다.

Integer[] intArray = new Integer[]{2, 5, 3, 1, 4};

TreeSet<Integer> tSetInt = new TreeSet<Integer>();

CollectionUtils.addAll(tSetInt, intArray);

System.out.println("TreeSet: " + tSetInt);

실행 결과

TreeSet: [1, 2, 3, 4, 5]

 

반응형

댓글