java
이 자습서에서는 예제를 통해 Java WeakHashMap 및 해당 작업에 대해 배웁니다. WeakHashMap과 HashMap의 차이점에 대해서도 알아보겠습니다.
WeakHashMap
Java 컬렉션 프레임워크의 클래스는 해시 테이블 데이터 구조의 기능을 제공합니다.
지도 인터페이스를 구현합니다.
참고 :약한 해시맵의 키는 WeakReference 유형.
약한 참조 유형의 개체는 참조가 프로그램에서 더 이상 사용되지 않는 경우 Java에서 가비지 수집될 수 있습니다.
먼저 약한 해시 맵을 만드는 방법을 알아보겠습니다. 그런 다음 해시맵과 어떻게 다른지 알아보겠습니다.
<시간>
약한 해시맵을 생성하려면 java.util.WeakHashMap
을 가져와야 합니다. 먼저 패키지. 패키지를 가져온 후 Java에서 약한 해시맵을 만드는 방법은 다음과 같습니다.
//WeakHashMap creation with capacity 8 and load factor 0.6
WeakHashMap<Key, Value> numbers = new WeakHashMap<>(8, 0.6);
위의 코드에서 numbers라는 약한 해시맵을 만들었습니다. .
여기,
new WeakHashMap<>(8, 0.6)
부분을 확인하세요. . 여기서 첫 번째 매개변수는 용량입니다. 두 번째 매개변수는 loadFactor입니다. .
기본 용량 및 부하율
용량과 부하율을 정의하지 않고 약한 해시맵을 생성하는 것이 가능합니다. 예를 들어,
// WeakHashMap with default capacity and load factor
WeakHashMap<Key, Value> numbers1 = new WeakHashMap<>();
기본적으로
Java에서 약한 해시맵의 구현을 살펴보겠습니다.
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String two = new String("Two");
Integer twoValue = 2;
String four = new String("Four");
Integer fourValue = 4;
// Inserting elements
numbers.put(two, twoValue);
numbers.put(four, fourValue);
System.out.println("WeakHashMap: " + numbers);
// Make the reference null
two = null;
// Perform garbage collection
System.gc();
System.out.println("WeakHashMap after garbage collection: " + numbers);
}
}
출력
WeakHashMap: {Four=4, Two=2} WeakHashMap after garbage collection: {Four}
보시다시피 2 키가 약한 해시맵의 null
으로 설정됨 가비지 수집을 수행하면 키가 제거됩니다.
해시맵과 달리 약한 해시맵의 키는 약한 참조이기 때문입니다. 유형. 이는 해당 항목에 대한 키가 더 이상 사용되지 않는 경우 가비지 수집기에 의해 맵 항목이 제거됨을 의미합니다. 이것은 자원을 절약하는 데 유용합니다.
이제 해시맵에서 동일한 구현을 살펴보겠습니다.
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// Creating HashMap of even numbers
HashMap<String, Integer> numbers = new HashMap<>();
String two = new String("Two");
Integer twoValue = 2;
String four = new String("Four");
Integer fourValue = 4;
// Inserting elements
numbers.put(two, twoValue);
numbers.put(four, fourValue);
System.out.println("HashMap: " + numbers);
// Make the reference null
two = null;
// Perform garbage collection
System.gc();
System.out.println("HashMap after garbage collection: " + numbers);
}
}
출력
HashMap: {Four=4, Two=2} HashMap after garbage collection: {Four=4, Two=2}
여기서 키 2일 때 해시맵의 null
로 설정됩니다. 가비지 수집을 수행하면 키가 제거되지 않습니다.
이는 약한 해시맵과 달리 해시맵의 키는 강력한 참조이기 때문입니다. 유형. 이는 해당 항목의 키가 더 이상 사용되지 않더라도 지도 항목이 가비지 수집기에 의해 제거되지 않음을 의미합니다.
참고 :약한 해시맵의 키는 약한 참조인 반면 해시맵의 키는 강한 참조라는 점을 제외하고 해시맵과 약한 해시맵의 모든 기능은 유사합니다.
<시간>다음은 다른 지도에서 약한 해시맵을 만드는 방법입니다.
import java.util.HashMap;
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating a hashmap of even numbers
HashMap<String, Integer> evenNumbers = new HashMap<>();
String two = new String("Two");
Integer twoValue = 2;
evenNumbers.put(two, twoValue);
System.out.println("HashMap: " + evenNumbers);
// Creating a weak hash map from other hashmap
WeakHashMap<String, Integer> numbers = new WeakHashMap<>(evenNumbers);
System.out.println("WeakHashMap: " + numbers);
}
}
출력
HashMap: {Two=2} WeakHashMap: {Two=2}<시간>
WeakHashMap
클래스는 지도에서 다양한 작업을 수행할 수 있는 메서드를 제공합니다.
put()
- 맵에 지정된 키/값 매핑을 삽입합니다.putAll()
- 지정된 지도의 모든 항목을 이 지도에 삽입합니다.putIfAbsent()
- 지정된 키가 맵에 없으면 지정된 키/값 매핑을 맵에 삽입합니다.예를 들어,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> evenNumbers = new WeakHashMap<>();
String two = new String("Two");
Integer twoValue = 2;
// Using put()
evenNumbers.put(two, twoValue);
String four = new String("Four");
Integer fourValue = 4;
// Using putIfAbsent()
evenNumbers.putIfAbsent(four, fourValue);
System.out.println("WeakHashMap of even numbers: " + evenNumbers);
//Creating WeakHashMap of numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("WeakHashMap of numbers: " + numbers);
}
}
출력
WeakHashMap of even numbers: {Four=4, Two=2} WeakHashMap of numbers: {Two=2, Four=4, One=1}<시간>
1. entrySet(), keySet() 및 values() 사용
entrySet()
- 맵의 모든 키/값 매핑 세트를 반환합니다.keySet()
- 지도의 모든 키 세트를 반환합니다.values()
- 지도의 모든 값 집합을 반환합니다.예를 들어,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using entrySet()
System.out.println("Key/Value mappings: " + numbers.entrySet());
// Using keySet()
System.out.println("Keys: " + numbers.keySet());
// Using values()
System.out.println("Values: " + numbers.values());
}
}
출력
WeakHashMap: {Two=2, One=1} Key/Value mappings: [Two=2, One=1] Keys: [Two, One] Values: [1, 2]
2. get() 및 getOrDefault() 사용
get()
- 지정된 키와 관련된 값을 반환합니다. null
반환 키를 찾을 수 없는 경우.getOrDefault()
- 지정된 키와 관련된 값을 반환합니다. 키를 찾을 수 없는 경우 지정된 기본값을 반환합니다.예를 들어,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using get()
int value1 = numbers.get("Two");
System.out.println("Using get(): " + value1);
// Using getOrDefault()
int value2 = numbers.getOrDefault("Four", 4);
System.out.println("Using getOrDefault(): " + value2);
}
}
출력
WeakHashMap: {Two=2, One=1} Using get(): 2 Using getOrDefault(): 4<시간>
remove(key)
- 지도에서 지정된 키와 관련된 항목을 반환하고 제거합니다.remove(key, value)
- 지정된 키가 지정된 값에 매핑되고 부울 값을 반환하는 경우에만 맵에서 항목을 제거합니다.예를 들어,
import java.util.WeakHashMap;
class Main {
public static void main(String[] args) {
// Creating WeakHashMap of even numbers
WeakHashMap<String, Integer> numbers = new WeakHashMap<>();
String one = new String("One");
Integer oneValue = 1;
numbers.put(one, oneValue);
String two = new String("Two");
Integer twoValue = 2;
numbers.put(two, twoValue);
System.out.println("WeakHashMap: " + numbers);
// Using remove() with single parameter
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// Using remove() with 2 parameters
boolean result = numbers.remove("One", 3);
System.out.println("Is the entry {One=3} removed? " + result);
System.out.println("Updated WeakHashMap: " + numbers);
}
}
출력
WeakHashMap: {Two=2, One=1} Removed value: 2 Is the entry {One=3} removed? False Updated WeakHashMap: {One=1}<시간>
메소드 | 설명 |
---|---|
clear() | 지도에서 모든 항목을 제거합니다. |
containsKey() | 지도에 지정된 키가 포함되어 있는지 확인하고 부울 값을 반환합니다. |
containsValue() | 지도에 지정된 값이 포함되어 있는지 확인하고 부울 값을 반환합니다. |
size() | 지도의 크기를 반환 |
isEmpty() | 지도가 비어 있는지 확인하고 부울 값을 반환합니다. |
자세한 내용은 Java WeakHashMap(공식 Java 설명서)을 참조하십시오.
java
자바 WeakHashMap 이 자습서에서는 예제를 통해 Java WeakHashMap 및 해당 작업에 대해 배웁니다. WeakHashMap과 HashMap의 차이점에 대해서도 알아보겠습니다. WeakHashMap Java 컬렉션 프레임워크의 클래스는 해시 테이블 데이터 구조의 기능을 제공합니다. 지도 인터페이스를 구현합니다. 참고 :약한 해시맵의 키는 WeakReference 유형. 약한 참조 유형의 개체는 참조가 프로그램에서 더 이상 사용되지 않는 경우 Java에서 가비지 수집될 수 있습니다. 먼저 약한 해시 맵을
자바에서 해시맵이란 무엇입니까? HashMap은 기본적으로 고유 키를 지정합니다. 해당 값에 특정 시점에서 검색할 수 있습니다. 자바 해시맵의 기능 a) 가치 키-값을 형성하여 지도에 저장할 수 있습니다. 쌍. 키를 올바른 메서드에 전달하여 값을 검색할 수 있습니다. b) 요소가 없는 경우 지도에 존재하는 경우 NoSuchElementException이 발생합니다. . c) HashMap은 객체만 저장합니다. 참조 . 그렇기 때문에 기본 데이터 유형을 사용할 수 없습니다. double 또는 int처럼. 대신 래퍼 클래스