산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java LinkedHashSet 마스터: 특징, 메서드, 실전 예제

Java LinkedHashSet

이 튜토리얼에서는 예제를 통해 Java LinkedHashSet 클래스와 메서드를 학습합니다.

Java 컬렉션 프레임워크의 LinkedHashSet 클래스는 해시 테이블과 연결 리스트 자료구조의 기능을 모두 제공합니다.

Set 인터페이스를 구현합니다.

LinkedHashSet의 요소들은 HashSet과 유사하게 해시 테이블에 저장됩니다.

그러나 연결 해시 집합은 모든 요소에 대해 내부적으로 이중 연결 리스트를 유지합니다. 연결 리스트는 해시 테이블에서 요소들이 삽입된 순서를 정의합니다.


LinkedHashSet 생성하기

연결 해시 집합을 생성하려면 먼저 java.util.LinkedHashSet 패키지를 임포트해야 합니다.

패키지 임포트 후 Java에서 연결 해시 집합을 생성하는 방법은 다음과 같습니다.

// 용량 8, 부하 계수 0.75인 LinkedHashSet
LinkedHashSet<Integer> numbers = new LinkedHashSet<>(8, 0.75);

numbers라는 연결 해시 집합을 생성했습니다.

new LinkedHashSet<>(8, 0.75) 부분에 주목하세요. 첫 번째 매개변수는 capacity, 두 번째는 loadFactor입니다.

기본 용량과 부하 계수

용량과 부하 계수를 정의하지 않고 연결 해시 집합을 생성할 수도 있습니다. 예:

// 기본 용량과 부하 계수인 LinkedHashSet
LinkedHashSet<Integer> numbers1 = new LinkedHashSet<>();

기본값:


다른 컬렉션에서 LinkedHashSet 생성하기

다른 컬렉션의 모든 요소를 포함하는 연결 해시 집합 생성 방법:

import java.util.LinkedHashSet;
import java.util.ArrayList;
class Main {
    public static void main(String[] args) {
        // 짝수 ArrayList 생성
        ArrayList<Integer> evenNumbers = new ArrayList<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("ArrayList: " + evenNumbers);
        // ArrayList에서 LinkedHashSet 생성
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>(evenNumbers);
        System.out.println("LinkedHashSet: " + numbers);
    }
}

출력

ArrayList: [2, 4] LinkedHashSet: [2, 4]

LinkedHashSet 메서드

LinkedHashSet 클래스는 연결 해시 집합에서 다양한 연산을 수행하는 메서드를 제공합니다.


LinkedHashSet에 요소 삽입하기

예제:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> evenNumber = new LinkedHashSet<>();
        // add() 메서드 사용
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("LinkedHashSet: " + evenNumber);
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        // addAll() 메서드 사용
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New LinkedHashSet: " + numbers);
    }
}

출력

LinkedHashSet: [2, 4, 6] New LinkedHashSet: [2, 4, 6, 5]

LinkedHashSet 요소 접근하기

연결 해시 집합의 요소에 접근하려면 iterator() 메서드를 사용할 수 있습니다. 이 메서드를 사용하려면 java.util.Iterator 패키지를 임포트해야 합니다. 예:

import java.util.LinkedHashSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("LinkedHashSet: " + numbers);
        // iterator() 메서드 호출
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("LinkedHashSet using Iterator: ");
        // 요소 접근
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

출력

LinkedHashSet: [2, 5, 6] LinkedHashSet using Iterator: 2, 5, 6,

참고:


HashSet에서 요소 제거하기

예제:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("LinkedHashSet: " + numbers);
        // remove() 메서드 사용
        boolean value1 = numbers.remove(5);
        System.out.println("Is 5 removed? " + value1);
        boolean value2 = numbers.removeAll(numbers);
        System.out.println("Are all elements removed? " + value2);
    }
}

출력

LinkedHashSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true

집합 연산

LinkedHashSet 클래스의 다양한 메서드로 여러 집합 연산 수행 가능.


집합의 합집합

두 집합 간 합집합에는 addAll() 메서드 사용. 예:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("LinkedHashSet1: " + evenNumbers);
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("LinkedHashSet2: " + numbers);
        // 두 집합의 합집합
        numbers.addAll(evenNumbers);
        System.out.println("Union is: " + numbers);
    }
}

출력

LinkedHashSet1: [2, 4] LinkedHashSet2: [1, 3] Union is: [1, 3, 2, 4]

집합의 교집합

두 집합 간 교집합에는 retainAll() 메서드 사용. 예:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("LinkedHashSet1: " + primeNumbers);
        LinkedHashSet<Integer> evenNumbers = new LinkedHashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("LinkedHashSet2: " + evenNumbers);
        // 두 집합의 교집합
        evenNumbers.retainAll(primeNumbers);
        System.out.println("Intersection is: " + evenNumbers);
    }
}

출력

LinkedHashSet1: [2, 3] LinkedHashSet2: [2, 4] Intersection is: [2]

집합의 차집합

두 집합 간 차집합 계산에는 removeAll() 메서드 사용. 예:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        primeNumbers.add(5);
        System.out.println("LinkedHashSet1: " + primeNumbers);
        LinkedHashSet<Integer> oddNumbers = new LinkedHashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        System.out.println("LinkedHashSet2: " + oddNumbers);
        // LinkedHashSet1과 LinkedHashSet2의 차집합
        primeNumbers.removeAll(oddNumbers);
        System.out.println("Difference : " + primeNumbers);
    }
}

출력

LinkedHashSet1: [2, 3, 5] LinkedHashSet2: [1, 3, 5] Difference: [2]

부분집합

한 집합이 다른 집합의 부분집합인지 확인에는 containsAll() 메서드 사용. 예:

import java.util.LinkedHashSet;
class Main {
    public static void main(String[] args) {
        LinkedHashSet<Integer> numbers = new LinkedHashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("LinkedHashSet1: " + numbers);
        LinkedHashSet<Integer> primeNumbers = new LinkedHashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("LinkedHashSet2: " + primeNumbers);
        // primeNumbers가 numbers의 부분집합인지 확인
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("Is LinkedHashSet2 is subset of LinkedHashSet1? " + result);
    }
}

출력

LinkedHashSet1: [1, 2, 3, 4] LinkedHashSet2: [2, 3] Is LinkedHashSet2 is a subset of LinkedHashSet1? true

LinkedHashSet 기타 메서드

메서드설명
clone()LinkedHashSet 복사본 생성
contains()지정된 요소 검색하고 불리언 결과 반환
isEmpty()LinkedHashSet이 비어있는지 확인
size()LinkedHashSet 크기 반환
clear()LinkedHashSet에서 모든 요소 제거

LinkedHashSet 메서드에 대해 더 알아보려면 Java LinkedHashSet(공식 Java 문서)을 방문하세요.


LinkedHashSet vs HashSet

LinkedHashSet과 HashSet 모두 Set 인터페이스를 구현하지만 차이가 존재합니다.


LinkedHashSet vs TreeSet

LinkedHashSet과 TreeSet의 주요 차이점:

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  4. Java String 마스터하기: 생성, 메서드, 모범 사례
  5. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  6. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  7. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  8. Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교