HOWTO · Java
Java에서 집합 교차점 찾기
이 기사에서는 Java에서 교차 집합을 찾는 방법을 소개합니다.
Set이라는 용어는java.util패키지에있는 인터페이스입니다. 집합은 정렬되지 않은 목록을 저장하고 중복 항목의 저장을 허용하지 않는 컬렉션 인터페이스입니다. 수학적으로 set 인터페이스에는 세 가지 속성이 있습니다.
- 세트의 요소가 널이 아닙니다.
- 집합의 두 요소는 같을 수 없습니다.
- 세트는 삽입 순서를 유지하지 않습니다.
세트 삽입 사용 및 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 HashSet는HashSet클래스의 새 인스턴스를 생성하고 형성된 참조를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]