ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java]Set
    Algorithm/자료구조 for Algorithm 2022. 3. 22. 00:52

    Set

    • Set은 내부 데이터를 중복해서 저장할 수 없고, 저장된 객체에 순서가 없다.
    • 따라서 Set은 List와 같이 인덱스를 사용하여 원소에 바로 접근할 수 없다.

    HashSet

    • Java는 내부적으로 Set 인터페이스를 따로 정의해 두었다. 이곳에 다양한 Set 구현체를 활용하여 코드를 작성할 수 있는데, HashSet은 기본적인 Set의 특성을 그대로 반영한 클래스이다.
    Set<Integer> set = new HashSet<>();
    set.add(5);
    set.add(5);
    set.add(1);
    set.add(1);
    set.add(3);
    
    System.out.println(set);
    

    • 다음과 같이 중복된 자료를 저장하더라도 중복되지 않게 저장되는 것을 확인할 수 있다.

     

    TreeSet

    • Set은 TreeSet을 사용하여 내부적으로 정렬된 상태를 유지하도록 할 수 있다.
    TreeSet<Integer> set = new TreeSet<>(new Comparator<Integer>() {
    	@Override
    	public int compare(Integer o1, Integer o2) {
    		// Set을 내림차순으로 정렬하는 기준 설정
    		return Integer.compare(o2, o1);
    	}
    	
    });
    
    set.add(5);
    set.add(5);
    set.add(1);
    set.add(1);
    set.add(3);
    
    System.out.println(set.pollFirst());
    System.out.println(set.pollLast());
    System.out.println(set);
    
    • 또 코드와 같이 Deque의 특성을 가지고 있어, 앞뒤로 꺼내는 연산이 가능하다.

     

    LinkedHashSet

    • Set은 삽입 순서를 보장하지 않는다. 하지만 LinkedHashSet은 연결리스트 형태로 구현이 되어 있기 때문에 삽입 순서를 보장하는 특징이 있다.
    LinkedHashSet<Integer> set = new LinkedHashSet<>();
    		
    set.add(5);
    set.add(5);
    set.add(1);
    set.add(1);
    set.add(3);
    set.add(7);
    set.add(-1);
    
    System.out.println(set);
    

     

    'Algorithm > 자료구조 for Algorithm' 카테고리의 다른 글

    [Java]우선순위큐(PriorityQueue)  (0) 2022.03.22
    [Java]서로소 집합(Disjoint Set)(Union-Find)(Merge-Find Set)  (0) 2021.04.15
    [Java]덱(Deque)  (0) 2021.02.18
    [Java]해시맵(HashMap)  (0) 2021.02.13
    [Java]큐(Queue)  (0) 2020.09.25

    댓글

Designed by Tistory.