자바 세트 예



자바 자바 세트 세트

Java Set 인터페이스는 중복 요소를 포함하지 않는 정렬되지 않은 요소 모음입니다. Set 인터페이스는 Java에서 수학적 Set의 기능을 제공합니다. 이 튜토리얼에서는 Java 세트 메소드 및 사용법에 대한 다양한 Java 세트 예제를 다룹니다.

Set 인터페이스의 특징

  • 중복 값을 허용하지 않는 고유 한 요소가 포함되어 있습니다.
  • Java Set에는 요소 저장 순서가 없습니다.
  • 인덱스가 없으므로 위치에 따라 요소에 액세스 할 수 없습니다.
  • 인터페이스이기 때문에 Set 구현 클래스를 사용하여 구현할 수 있습니다.
  • 컬렉션 인터페이스 확장

자바 세트와 자바 목록의 차이점

  • Java Set는 정렬되지 않은 요소 모음이지만 명부 정렬 된 요소 모음입니다.
  • Set에는 인덱스 기반 액세스가 없지만 List에는 요소에 액세스 할 수있는 인덱스가 있습니다.
  • Set에서는 중복 값을 추가 할 수 없지만 List에서는 중복 값을 추가 할 수 있습니다.

구현 설정

이후 Java Set는 인터페이스입니다., 개체를 직접 만들 수 없습니다. 따라서 HashSet, TreeSet, LinkedHashSet 또는 EnumSet과 같은 클래스 중 하나를 구현해야합니다. 각 세트 클래스는 아래에 설명 된대로 다른 방식으로 작동합니다.

  • HashSet – 세트를 순회하는 동안 요소의 순서 나 순서가 없습니다.
  • TreeSet – 정렬과 함께 요소의 순서를 유지합니다.
  • LinkedHashSet – 삽입과 동일한 요소의 순서를 유지합니다.

자바 설정

자바 세트 예

set 인터페이스를 구현하려면 java.util. * 패키지를 가져와야합니다. 그렇지 않으면 개별 클래스 패키지를 개별적으로 가져와야합니다.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set set1 = new HashSet();
    Set set2 = new TreeSet();
    Set set3 = new LinkedHashSet();

  }

}

아래와 같이 Generic Sets를 생성 할 수도 있습니다. 여기에서는 HashSet을 String 유형으로, TreeSet을 Integer 유형으로 지정했습니다. 따라서 이러한 개체는 이러한 특정 유형의 값만 허용합니다.

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set<String> setstring = new HashSet<String>();
    Set<Integer> setint = new TreeSet<Integer>();
  }
}

Java Set 메서드

Set은 Collection 인터페이스의 모든 방법과 함께 아래 언급 된 방법을 포함합니다.

방법제품 설명매개 변수
부울 add (문자열 e)아직 존재하지 않는 경우 세트에 요소를 추가합니다. 요소가 이미 세트에 존재하면 false를 반환하고 호출을 무시합니다.e-세트에 추가 할 요소
부울 addAll (Collectionc)컬렉션의 모든 요소가없는 경우 집합에 추가합니다.c-추가 할 요소 모음
무효 clear ()세트에서 모든 요소를 ​​제거하고 세트는 비어 있습니다.
부울 contains (Object o)세트에 요소가 포함되어 있는지 확인하고 존재하는 경우 true를 반환합니다.o-세트에서 검색 할 요소
부울 containsAll (컬렉션 c)컬렉션이 집합의 하위 집합인지 확인하고 존재하는 경우 true를 반환합니다.c-요소 모음
부울 같음 (Object o)전달 된 개체와 집합이 같은지 확인합니다. 둘 다 세트이고 동일한 요소와 크기를 포함하면 true를 반환합니다.o-비교해야 할 객체
부울 isEmpty ()세트가 비어 있는지 확인하고 비어 있으면 true를 반환합니다.
반복기 iterator ()세트의 요소를 탐색하는 반복기를 리턴합니다.
부울 제거 (Object o)집합에서 특정 요소를 제거하고 요소가 제거되면 true를 반환합니다.o-제거 할 요소
boolean removeAll (컬렉션 c)집합에서 컬렉션의 모든 요소를 ​​제거합니다 (있는 경우)c-제거 할 요소 모음
boolean preserveAll (컬렉션 c)집합의 컬렉션에있는 요소 만 유지합니다. 즉, 컬렉션의 일부가 아닌 다른 모든 요소를 ​​제거합니다.c-보유 할 요소 모음
int 크기 ()집합의 요소 수를 반환합니다.
SplitIterator splititerator ()집합의 요소에 대해 분할 반복기를 만듭니다.
Object [] toArray ()세트의 모든 요소를 ​​배열로 변환합니다.
String toString ()객체의 문자열 표현을 반환합니다.

예외 설정

자바 세트 발생 아래 예외

  • 지원되지 않는 작업 예외
  • NullPointer 예외
  • 클래스캐스트 예외
  • IllegalArgumentException

세트에서 요소 추가 및 제거

아래 예제에서는 먼저 HashSet을 만들고 2 개의 요소를 추가합니다. 그런 다음 또 다른 HashSet을 만들고 요소를 2 개 더 추가합니다. 그런 다음 첫 번째 세트에 컬렉션으로 추가됩니다.

제거 예에서는 먼저 첫 번째 세트에서 요소를 제거한 다음 두 번째 세트에서 모든 요소를 ​​제거합니다.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {

    Set<String> setstring = new HashSet<String>();
    setstring.add("Java");
    setstring.add("Javascript");
    System.out.println(setstring);
    
    Set<String> string2 = new HashSet<String>();
    string2.add("C");
    string2.add("C++");
    
    setstring.addAll(string2);
    System.out.println("Elements in set after addAll operation");
    System.out.println(setstring);
    
    setstring.remove("Javascript");
    System.out.println("Elements in the set after remove opertaion");
    System.out.println(setstring);
    
    setstring.removeAll(string2);
    System.out.println("Elements in the set after removeAll opertaion");
    System.out.println(setstring);
    
  }
  

}
Output:
[Java, Javascript]
Elements in set after addAll operation
[Java, C++, C, Javascript]
Elements in the set after remove opertaion
[Java, C++, C]
Elements in the set after removeAll opertaion
[Java]

TreeSet을 사용하여 요소 정렬

여기서는 정수 배열을 선언 한 다음 for 루프를 사용하여 HashSet에 요소를 추가했습니다. 출력에서 세트 기능인 중복 요소 "12"가 포함되지 않은 것을 볼 수 있습니다. 아래 예제와 같이 TreeSet을 사용하여 HashSet의 요소를 정렬 할 수 있습니다.

import java.util.*;

public class SetSort {

  public static void main(String[] args) {
    Set<Integer> numbers = new HashSet<Integer>();
    int[] a = {34,78,12,67,45,23,12,89};
    for(int i=0;i<a.length;i++) {
      numbers.add(a[i]);
    }
    System.out.println("Elements in HashSet");
    System.out.println(numbers);
    
    Set<Integer> treeset = new TreeSet<Integer>(numbers);
    System.out.println("Elements in treeset after sort");
    System.out.println(treeset);
  }

}
Output:
Elements in HashSet
[34, 67, 23, 89, 12, 45, 78]
Elements in treeset after sort
[12, 23, 34, 45, 67, 78, 89]

Java 세트를 배열로 변환

세트를 정렬 아래에 설명 된대로 toArray 메소드를 사용하는 요소의.

import java.util.*;

public class SetArray {

  public static void main(String[] args) {
    Set<String> names = new HashSet<String>();
    names.add("Roshan");
    names.add("Kiran");
    names.add("Tejas");
    names.add("Karthik");
    
    String[] strnames = names.toArray(new String[names.size()]);
    for(String strvalues: strnames) {
      System.out.println(strvalues);
    }

  }

}
Output:
Roshan
Kiran
Tejas
Karthik

Set 연산의 Java 프로그램 예 (Union, Intersection, Difference)

이 예에서는 2 개의 정수 세트를 생성했습니다. 두 세트의 결합을 수행하기 위해 두 세트의 모든 고유 요소를 추가하는 addAll 메소드를 사용합니다. 교차의 경우, 세트 간의 공통 요소 만 유지하기 위해 preserveAll 메소드를 사용합니다. 두 세트의 차이점을 찾기 위해 set2의 공통 요소와 함께 set2의 모든 요소를 ​​제거하는 removeAll 메소드를 사용합니다.

import java.util.*;

public class SetOperations {

  public static void main(String[] args) {
    Set<Integer> set1 = new HashSet<Integer>();
    set1.add(3);
    set1.add(7);
    set1.add(5);
    set1.add(1);
    System.out.println("Set 1 : " + set1);
    
    Set<Integer> set2 = new HashSet<Integer>();
    set2.add(3);
    set2.add(4);
    set2.add(9);
    set2.add(5);
    
    System.out.println("Set 2 : " + set2);
    
    Set<Integer> a = new HashSet<Integer>(set1);
    a.addAll(set2);
    
    System.out.println("Union of Set 1 and Set 2 : " + a);
    
    Set<Integer> b = new HashSet<Integer>(set1);
    b.retainAll(set2);
    System.out.println("Intersection of Set 1 and Set 2 : " + b);
    
    Set<Integer> c = new HashSet<Integer>(set1);
    c.removeAll(set2);
    System.out.println("Difference between Set 1 and Set 2 : " + c);
  }

}
Output:
Set 1 : [1, 3, 5, 7]
Set 2 : [3, 4, 5, 9]
Union of Set 1 and Set 2 : [1, 3, 4, 5, 7, 9]
Intersection of set 1 and set 2 : [3, 5]
Difference between 2 sets : [1, 7]

결론

이 튜토리얼에서는 Set in Java 및 다양한 조작을 위해 set을 만들고 사용하는 방법에 대해 배웠습니다.

참고