어제 오늘 내일

[Java LinkedHashSet] 주요 메소드 정리 및 활용 예제 본문

IT/Java

[Java LinkedHashSet] 주요 메소드 정리 및 활용 예제

hi.anna 2025. 10. 8. 07:16

LinkedHashSetHashSet을 상속받은 클래스지만 내부적으로 이중 연결 리스트(doubly-linked list) 를 사용해 삽입 순서를 유지한다는 차이가 있습니다. 중복을 허용하지 않으면서도 저장 순서를 보장해야 할 때 유용합니다.

 

1. add()

import java.util.LinkedHashSet;

public class LinkedHashSetAdd {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        set.add("kim");
        set.add("lee");
        set.add("park");
        set.add("kim"); // 중복 삽입 시 무시

        System.out.println(set); // [kim, lee, park]
    }
}

중복은 허용하지 않고, 입력한 순서대로 저장됩니다.

 

2. remove()

import java.util.LinkedHashSet;

public class LinkedHashSetRemove {
    public static void main(String[] args) {
        LinkedHashSet<Integer> set = new LinkedHashSet<>();
        set.add(1);
        set.add(2);
        set.add(3);

        boolean removed = set.remove(2);
        System.out.println(removed); // true
        System.out.println(set);     // [1, 3]
    }
}

요소가 있으면 삭제 후 true, 없으면 false를 반환합니다.

 

3. contains()

import java.util.LinkedHashSet;

public class LinkedHashSetContains {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        set.add("kim");
        set.add("lee");

        System.out.println(set.contains("kim"));  // true
        System.out.println(set.contains("park")); // false
    }
}

요소 존재 여부를 빠르게 확인할 수 있습니다.

 

4. size(), isEmpty()

import java.util.LinkedHashSet;

public class LinkedHashSetSizeEmpty {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        System.out.println(set.isEmpty()); // true

        set.add("kim");
        set.add("lee");

        System.out.println(set.size());    // 2
        System.out.println(set.isEmpty()); // false
    }
}

저장된 요소 개수와 비어 있는지 여부를 확인합니다.

 

5. clear()

import java.util.LinkedHashSet;

public class LinkedHashSetClear {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        set.add("kim");
        set.add("lee");

        set.clear();
        System.out.println(set); // []
    }
}

모든 요소를 한 번에 제거합니다.

 

6. 반복 (for-each, Iterator)

import java.util.*;

public class LinkedHashSetIteration {
    public static void main(String[] args) {
        LinkedHashSet<String> set = new LinkedHashSet<>();
        set.add("kim");
        set.add("lee");
        set.add("park");

        // for-each
        for (String name : set) {
            System.out.print(name + " ");
        }
        System.out.println();

        // Iterator
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

삽입 순서대로 순회할 수 있는 것이 HashSet과의 가장 큰 차이점입니다.

 

결론

  • LinkedHashSetHashSet과 동일한 API를 가지지만 삽입 순서를 보장한다는 특징이 있음
  • 중복 없는 집합 + 순서 유지가 필요할 때 적합
  • 주요 메소드: add, remove, contains, size, isEmpty, clear, 반복(for-each, Iterator)

 

 

반응형
Comments