JAVA

[Java] Collection - Set

lakelight 2022. 9. 19. 19:29
728x90
반응형

Collection

Java Collection의 주요 인터페이스는 List, Set, Map이 있습니다. 인터페이스를 구분하는 가장 중요한 개념은 "순서", "데이터 중복 여부" 입니다.

  • List - 순서가 있고, 데이터 중복이 가능합니다.
  • Set - 순서가 없고, 데이터 중복이 불가능합니다.
  • Map - Key, Value 구조로 데이터가 저장되고, Key는 중복이 불가능하지만 Value는 중복이 가능합니다.

이미지 출처: https://memostack.tistory.com/234

 

Set

중복된 요소를 포함할 수 없는 인터페이스입니다. List와 다르게 인덱스를 사용하지 않기 때문에, 인덱스 매개변수가 없습니다. Set 인터페이스의 메서드는 아래와 같습니다.

 

Set 인터페이스를 구현한 클래스 종류

  1. HashSet
  2. Linked HashSet
  3. TreeSet

 

HashSet

해싱이라고 불리는 로직을 이용해서 객체를 저장합니다. 또한 기본적으로 Set은 중복된 데이터는 저장하지 않습니다.

 

기본적으로 데이터가 저장될 때 Set 정렬방식

  • HashSet: 랜덤 정렬
  • LinkedHashSet: 입력 순서대로 정렬
  • TreeSet: comparator에 의해서 정렬

 

Set을 List로 변환하는 방법

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

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

        Set<String> set = new HashSet<>();
        set.add("해");
        set.add("구름");
        set.add("노을");

        List<String> list = set.stream().collect(Collectors.toList());
        System.out.println(list);
    }
}
Stream API를 사용해서 List로 변환하는 방법

 

[참고]

1.  Collection - List, Set, Map

728x90
반응형

'JAVA' 카테고리의 다른 글

[Java] Thread Local  (0) 2022.10.24
[Java] Collection - Map  (0) 2022.09.19
[Java] Collection - List  (0) 2022.09.19
[Java] JDK 동적 프록시  (0) 2022.08.24
[Java] Reflection  (0) 2022.08.24