Java에서 집합 교차점 찾기

Rashmi Patidar 2023년10월12일
Java에서 집합 교차점 찾기

Set이라는 용어는java.util패키지에있는 인터페이스입니다. 집합은 정렬되지 않은 목록을 저장하고 중복 항목의 저장을 허용하지 않는 컬렉션 인터페이스입니다. 수학적으로 set 인터페이스에는 세 가지 속성이 있습니다.

  1. 세트의 요소가 널이 아닙니다.
  2. 집합의 두 요소는 같을 수 없습니다.
  3. 세트는 삽입 순서를 유지하지 않습니다.

세트 삽입 사용 및 Java에서 세트 교차 찾기

아래 프로그램은 세트 삽입 및 Java에서 두 세트 간의 교차점 찾기를 보여줍니다.

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SetIntersection {
  public static void main(String[] args) {
    Set<Integer> s1 = new HashSet<>();
    s1.add(2);
    s1.add(7);
    s1.add(1);
    System.out.println("Set1: " + s1);
    List list = Arrays.asList(1, 7, 6, 8);
    Set<Integer> s2 = new HashSet<>(list);
    System.out.println("Set2: " + s2);
    Set<Integer> intersection = new HashSet<>(s1);
    intersection.retainAll(s2);
    System.out.println("Intersection: " + intersection);
  }
}

위의 코드에서 집합은 프로세스의 첫 번째 단계로 선언됩니다. new HashSetHashSet클래스의 새 인스턴스를 생성하고 형성된 참조를Set인스턴스에 할당합니다. HashSet의 기본 용량은16이고 부하율은0.75입니다. HashSet클래스는HashSet가 내부적으로 Set 인터페이스를 구현하기 때문에Set인터페이스와 호환됩니다.

s1변수는add메소드를 사용하여 초기화됩니다. 이 함수는 개체가 null이 아니고 중복되지 않는다는 점을 고려하여 정의 된 유형의 개체를 Set 인스턴스에 추가합니다. 이 함수는 값 삽입 여부에 따라부울을 반환합니다. 함수는 지정된 요소의 클래스가 Set 인스턴스의 클래스와 유사하지 않은 경우ClassCastException을 발생시킵니다. 요소가 null 값이면NullPointerException을, 요소의 일부 속성이 Set 컬렉션에 추가하는 것을 금지하면IllegalArgumentException을 발생시킵니다.

집합을 만드는 또 다른 방법은HashSet생성자 매개 변수에 전달 된list인스턴스를 사용하는 것입니다. 목록은Arrays클래스의asList메소드를 사용하여 정의 된 값으로 초기화됩니다. 목록의 인스턴스는HashSet생성자에서 매개 변수로 전달됩니다. Set 컬렉션은 요소가 저장되는 순서를 유지하지 않습니다.

Set의 다른 인스턴스는s1인스턴스를 생성자 매개 변수로 사용하여 인스턴스화됩니다. 이제이intersection참조는retainAll함수 인 다른 메소드를 호출합니다. 이 함수는 인스턴스와 호출 된 인스턴스를 호출 할 때 존재하는 요소 만 유지합니다. 이 메서드는retain작업에서 Set이 변경되면boolean true를 반환합니다. 집합에 대한 작업을 지원하지 않는 경우UnsupportedOperationException이 발생합니다. 호환되지 않는 세트 유형이있는 경우ClassCastException이 발생하고 Set에 널 요소가 포함 된 경우NullPointerException이 발생합니다.

위의 세트 간 교차점의 출력은 다음과 같습니다.

출력:

Set1: [1, 2, 7]
Set2: [1, 6, 7, 8]
Intersection: [1, 7]
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

관련 문장 - Java Set