java
이 튜토리얼에서는 Java HashSet 클래스에 대해 학습합니다. 예제를 통해 다양한 해시 세트 방법과 연산에 대해 알아보겠습니다.
HashSet
Java Collections 프레임워크의 클래스는 해시 테이블 데이터 구조의 기능을 제공합니다.
Set 인터페이스를 구현합니다.
해시 세트를 생성하려면 java.util.HashSet
을 가져와야 합니다. 먼저 포장하십시오.
패키지를 가져온 후 Java에서 해시 세트를 만드는 방법은 다음과 같습니다.
// HashSet with 8 capacity and 0.75 load factor
HashSet<Integer> numbers = new HashSet<>(8, 0.75);
여기에서 numbers
라는 해시 세트를 만들었습니다. .
새 HashSet<>(8, 0.75)
부분에 유의하세요. . 여기서 첫 번째 매개변수는 용량입니다. , 두 번째 매개변수는 loadFactor입니다. .
기본 용량 및 부하율
용량과 부하율을 정의하지 않고 해시 테이블을 생성하는 것이 가능합니다. 예를 들어,
// HashSet with default capacity and load factor
HashSet<Integer> numbers1 = new HashSet<>();
기본적으로
HashSet
클래스는 집합에서 다양한 작업을 수행할 수 있는 다양한 메서드를 제공합니다.
add()
- 지정된 요소를 집합에 삽입addAll()
- 지정된 컬렉션의 모든 요소를 집합에 삽입합니다.예를 들어,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> evenNumber = new HashSet<>();
// Using add() method
evenNumber.add(2);
evenNumber.add(4);
evenNumber.add(6);
System.out.println("HashSet: " + evenNumber);
HashSet<Integer> numbers = new HashSet<>();
// Using addAll() method
numbers.addAll(evenNumber);
numbers.add(5);
System.out.println("New HashSet: " + numbers);
}
}
출력
HashSet: [2, 4, 6] New HashSet: [2, 4, 5, 6]<시간>
해시 세트의 요소에 액세스하려면 iterator()
을 사용할 수 있습니다. 방법. 이 방법을 사용하려면 java.util.Iterator
을 가져와야 합니다. 패키지. 예를 들어,
import java.util.HashSet;
import java.util.Iterator;
class Main {
public static void main(String[] args) {
HashSet<Integer> numbers = new HashSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("HashSet: " + numbers);
// Calling iterator() method
Iterator<Integer> iterate = numbers.iterator();
System.out.print("HashSet using Iterator: ");
// Accessing elements
while(iterate.hasNext()) {
System.out.print(iterate.next());
System.out.print(", ");
}
}
}
출력
HashSet: [2, 5, 6] HashSet using Iterator: 2, 5, 6,<시간>
remove()
- 세트에서 지정된 요소를 제거합니다.removeAll()
- 집합에서 모든 요소를 제거합니다.
예를 들어,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> numbers = new HashSet<>();
numbers.add(2);
numbers.add(5);
numbers.add(6);
System.out.println("HashSet: " + numbers);
// Using remove() method
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);
}
}
출력
HashSet: [2, 5, 6] Is 5 removed? true Are all elements removed? true<시간>
HashSet
의 다양한 메소드 다양한 집합 작업을 수행하는 데 사용할 수도 있습니다.
두 세트 간의 합집합을 수행하려면 addAll()
을 사용할 수 있습니다. 방법. 예를 들어,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> evenNumbers = new HashSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("HashSet1: " + evenNumbers);
HashSet<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(3);
System.out.println("HashSet2: " + numbers);
// Union of two set
numbers.addAll(evenNumbers);
System.out.println("Union is: " + numbers);
}
}
출력
HashSet1: [2, 4] HashSet2: [1, 3] Union is: [1, 2, 3, 4]<시간>
두 세트 사이의 교집합을 수행하려면 retainAll()
를 사용할 수 있습니다. 방법. 예를 들어
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("HashSet1: " + primeNumbers);
HashSet<Integer> evenNumbers = new HashSet<>();
evenNumbers.add(2);
evenNumbers.add(4);
System.out.println("HashSet2: " + evenNumbers);
// Intersection of two sets
evenNumbers.retainAll(primeNumbers);
System.out.println("Intersection is: " + evenNumbers);
}
}
출력
HashSet1: [2, 3] HashSet2: [2, 4] Intersection is: [2]<시간>
두 세트의 차이를 계산하기 위해 removeAll()
를 사용할 수 있습니다. 방법. 예를 들어,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
primeNumbers.add(5);
System.out.println("HashSet1: " + primeNumbers);
HashSet<Integer> oddNumbers = new HashSet<>();
oddNumbers.add(1);
oddNumbers.add(3);
oddNumbers.add(5);
System.out.println("HashSet2: " + oddNumbers);
// Difference between HashSet1 and HashSet2
primeNumbers.removeAll(oddNumbers);
System.out.println("Difference : " + primeNumbers);
}
}
출력
HashSet1: [2, 3, 5] HashSet2: [1, 3, 5] Difference: [2]<시간>
집합이 다른 집합의 하위 집합인지 확인하려면 containsAll()
를 사용할 수 있습니다. 방법. 예를 들어,
import java.util.HashSet;
class Main {
public static void main(String[] args) {
HashSet<Integer> numbers = new HashSet<>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(4);
System.out.println("HashSet1: " + numbers);
HashSet<Integer> primeNumbers = new HashSet<>();
primeNumbers.add(2);
primeNumbers.add(3);
System.out.println("HashSet2: " + primeNumbers);
// Check if primeNumbers is a subset of numbers
boolean result = numbers.containsAll(primeNumbers);
System.out.println("Is HashSet2 is subset of HashSet1? " + result);
}
}
출력
HashSet1: [1, 2, 3, 4] HashSet2: [2, 3] Is HashSet2 is a subset of HashSet1? true<시간>
메소드 | 설명 |
---|---|
clone() | HashSet 사본을 생성합니다. |
contains() | HashSet 검색 지정된 요소에 대해 부울 결과를 반환합니다. |
isEmpty() | HashSet 인지 확인 비어 있습니다 |
size() | HashSet 의 크기를 반환합니다. |
clear() | HashSet 에서 모든 요소를 제거합니다. |
HashSet 메서드에 대한 자세한 내용은 Java HashSet(공식 Java 설명서)를 참조하십시오.
<시간>
자바에서는 HashSet
요소에 무작위로 액세스해야 하는 경우 일반적으로 사용됩니다. 해시 테이블의 요소에 해시 코드를 사용하여 액세스하기 때문입니다.
요소의 해시코드는 해시 테이블에서 요소를 식별하는 데 도움이 되는 고유한 ID입니다.
HashSet
중복 요소를 포함할 수 없습니다. 따라서 각 해시 집합 요소에는 고유한 해시 코드가 있습니다.
참고: HashSet이 동기화되지 않았습니다. 즉, 여러 스레드가 해시 세트에 동시에 액세스하고 스레드 중 하나가 해시 세트를 수정하는 경우입니다. 그런 다음 외부에서 동기화되어야 합니다.
java
자바 PrintStream 클래스 이 자습서에서는 예제를 통해 Java PrintStream 클래스와 해당 print() 및 printf() 메서드에 대해 배웁니다. PrintStream java.io 클래스 패키지는 바이트 대신 일반적으로 읽을 수 있는 형식(텍스트)으로 출력 데이터를 쓰는 데 사용할 수 있습니다. 추상 클래스 OutputStream를 확장합니다. . PrintStream 작업 다른 출력 스트림과 달리 PrintStream 기본 데이터(정수, 문자)를 바이트 대신 텍스트 형식으로 변환합니다. 그런 다음
일반적으로 Numbers로 작업할 때 byte, int, long, double 등과 같은 기본 데이터 유형을 사용합니다. 예시 int i = 5000; float gpa = 13.65f; double mask = 125; 그러나 개발 과정에서 기본 데이터 유형 대신 객체를 사용해야 하는 상황을 접하게 됩니다. 이를 달성하기 위해 Java는 래퍼 클래스를 제공합니다. . 모든 래퍼 클래스(Integer, Long, Byte, Double, Float, Short)는 추상 클래스 Number의 하위 클래스입니다. 래퍼 클래