java
이 자습서에서는 예제를 통해 Java TreeMap 클래스와 해당 작업에 대해 알아봅니다.
TreeMap
Java 컬렉션 프레임워크의 클래스는 트리 데이터 구조 구현을 제공합니다.
NavigableMap 인터페이스를 구현합니다.
TreeMap
를 생성하려면 , java.util.TreeMap
을 가져와야 합니다. 먼저 패키지. 패키지를 가져오면 다음은 TreeMap
를 만드는 방법입니다. 자바로.
TreeMap<Key, Value> numbers = new TreeMap<>();
위의 코드에서 TreeMap
을 생성했습니다. 명명된 숫자 아무 주장 없이. 이 경우 TreeMap
의 요소는 자연스럽게 정렬됩니다(오름차순).
그러나 Comparator
를 사용하여 요소 정렬을 사용자 정의할 수 있습니다. 상호 작용. 이 튜토리얼의 뒷부분에서 이에 대해 알아볼 것입니다.
여기,
TreeMap
클래스는 지도에서 작업을 수행할 수 있는 다양한 메서드를 제공합니다.
put()
- 맵에 지정된 키/값 매핑(항목)을 삽입합니다.putAll()
- 지정된 지도의 모든 항목을 이 지도에 삽입합니다.putIfAbsent()
- 지정된 키가 맵에 없으면 지정된 키/값 매핑을 맵에 삽입합니다.예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
// Creating TreeMap of even numbers
TreeMap<String, Integer> evenNumbers = new TreeMap<>();
// Using put()
evenNumbers.put("Two", 2);
evenNumbers.put("Four", 4);
// Using putIfAbsent()
evenNumbers.putIfAbsent("Six", 6);
System.out.println("TreeMap of even numbers: " + evenNumbers);
//Creating TreeMap of numbers
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
// Using putAll()
numbers.putAll(evenNumbers);
System.out.println("TreeMap of numbers: " + numbers);
}
}
출력
TreeMap of even numbers: {Four=4, Six=6, Two=2} TreeMap of numbers: {Four=4, One=1, Six=6, Two=2}<시간>
1. entrySet(), keySet() 및 values() 사용
entrySet()
- 트리맵의 모든 키/값 매핑(항목) 집합을 반환합니다.keySet()
- 트리 맵의 모든 키 세트를 반환합니다.values()
- 트리 맵의 모든 맵 세트를 반환합니다.예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + 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());
}
}
출력
TreeMap: {One=1, Three=3, Two=2} Key/Value mappings: [One=1, Three=3, Two=2] Keys: [One, Three, Two] Values: [1, 3, 2]
2. get() 및 getOrDefault() 사용
get()
- 지정된 키와 관련된 값을 반환합니다. 키를 찾을 수 없으면 null을 반환합니다.getOrDefault()
- 지정된 키와 관련된 값을 반환합니다. 키를 찾을 수 없는 경우 지정된 기본값을 반환합니다.예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + numbers);
// Using get()
int value1 = numbers.get("Three");
System.out.println("Using get(): " + value1);
// Using getOrDefault()
int value2 = numbers.getOrDefault("Five", 5);
System.out.println("Using getOrDefault(): " + value2);
}
}
출력
TreeMap: {One=1, Three=3, Two=2} Using get(): 3 Using getOrDefault(): 5
여기서 getOrDefault()
메소드가 Five 키를 찾지 못했습니다. . 따라서 지정된 기본값 5를 반환합니다. .
remove(key)
- TreeMap에서 지정된 키와 관련된 항목을 반환하고 제거합니다.remove(key, value)
- 지정된 키가 지정된 값과 연결되고 부울 값을 반환하는 경우에만 맵에서 항목을 제거합니다.예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("One", 1);
numbers.put("Two", 2);
numbers.put("Three", 3);
System.out.println("TreeMap: " + numbers);
// remove method with single parameter
int value = numbers.remove("Two");
System.out.println("Removed value: " + value);
// remove method with two parameters
boolean result = numbers.remove("Three", 3);
System.out.println("Is the entry {Three=3} removed? " + result);
System.out.println("Updated TreeMap: " + numbers);
}
}
출력
TreeMap: {One=1, Three=3, Two=2} Removed value = 2 Is the entry {Three=3} removed? True Updated TreeMap: {One=1}<시간>
replace(key, value)
- 지정된 key로 매핑된 값을 대체합니다. 새로운 값으로 replace(key, old, new)
- 이전 값이 이미 지정된 키와 연결되어 있는 경우에만 이전 값을 새 값으로 바꿉니다.replaceAll(function)
- 맵의 각 값을 지정된 함수의 결과로 바꿉니다. 예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("Original TreeMap: " + numbers);
// Using replace()
numbers.replace("Second", 22);
numbers.replace("Third", 3, 33);
System.out.println("TreeMap using replace: " + numbers);
// Using replaceAll()
numbers.replaceAll((key, oldValue) -> oldValue + 2);
System.out.println("TreeMap using replaceAll: " + numbers);
}
}
출력
Original TreeMap: {First=1, Second=2, Third=3} TreeMap using replace(): {First=1, Second=22, Third=33} TreeMap using replaceAll(): {First=3, Second=24, Third=35}
위의 프로그램에서 선언문을 확인하십시오.
numbers.replaceAll((key, oldValue) -> oldValue + 2);
여기에서는 람다 식을 인수로 전달했습니다.
replaceAll()
메소드는 맵의 모든 항목에 액세스합니다. 그런 다음 모든 요소를 새 값(람다 식에서 반환됨)으로 바꿉니다.
TreeMap
이후 클래스는 NavigableMap
를 구현합니다. , 트리맵의 요소를 탐색하는 다양한 방법을 제공합니다.
firstKey()
- 지도의 첫 번째 키를 반환합니다.firstEntry()
- 맵의 첫 번째 키의 키/값 매핑을 반환합니다.lastKey()
- 지도의 마지막 키를 반환합니다.lastEntry()
- 맵의 마지막 키에 대한 키/값 매핑을 반환합니다.예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("TreeMap: " + numbers);
// Using the firstKey() method
String firstKey = numbers.firstKey();
System.out.println("First Key: " + firstKey);
// Using the lastKey() method
String lastKey = numbers.lastKey();
System.out.println("Last Key: " + lastKey);
// Using firstEntry() method
System.out.println("First Entry: " + numbers.firstEntry());
// Using the lastEntry() method
System.out.println("Last Entry: " + numbers.lastEntry());
}
}
출력
TreeMap: {First=1, Second=2, Third=3} First Key: First Last Key: Third First Entry: First=1 Last Entry: Third=3<시간>
예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 5);
numbers.put("Third", 4);
numbers.put("Fourth", 6);
System.out.println("TreeMap: " + numbers);
// Using higher()
System.out.println("Using higherKey(): " + numbers.higherKey("Fourth"));
System.out.println("Using higherEntry(): " + numbers.higherEntry("Fourth"));
// Using lower()
System.out.println("\nUsing lowerKey(): " + numbers.lowerKey("Fourth"));
System.out.println("Using lowerEntry(): " + numbers.lowerEntry("Fourth"));
// Using ceiling()
System.out.println("\nUsing ceilingKey(): " + numbers.ceilingKey("Fourth"));
System.out.println("Using ceilingEntry(): " + numbers.ceilingEntry("Fourth"));
// Using floor()
System.out.println("\nUsing floorKey(): " + numbers.floorKey("Fourth"));
System.out.println("Using floorEntry(): " + numbers.floorEntry("Fourth"));
}
}
출력
TreeMap: {First=1, Fourth=6, Second=5, Third=4} Using higherKey(): Second Using higherEntry(): Second=5 Using lowerKey(): First Using lowerEntry(): First=1 Using ceilingKey(): Fourth Using ceilingEntry(): Fourth=6 Using floorkey(): Fourth Using floorEntry(): Fourth=6<시간>
pollFirstEntry()
- 지도의 첫 번째 키와 관련된 항목을 반환하고 제거합니다.pollLastEntry()
- 지도의 마지막 키와 관련된 항목을 반환하고 제거합니다.
예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
System.out.println("TreeMap: " + numbers);
//Using the pollFirstEntry() method
System.out.println("Using pollFirstEntry(): " + numbers.pollFirstEntry());
// Using the pollLastEntry() method
System.out.println("Using pollLastEntry(): " + numbers.pollLastEntry());
System.out.println("Updated TreeMap: " + numbers);
}
}
출력
TreeMap: {First=1, Second=2, Third=3} Using pollFirstEntry(): First=1 Using pollLastEntry(): Third=3 Updated TreeMap: {Second=2}<시간>
headMap(키, 부울 값)
headMap()
메소드는 지정된 key 이전에 트리맵의 모든 키/값 쌍을 반환합니다. (인수로 전달됨).
부울 값 매개변수는 선택 사항입니다. 기본값은 false
입니다. .
true
인 경우 booleanValue로 전달됩니다. , 메소드에는 key
의 키/값 쌍도 포함됩니다. 인수로 전달됩니다.
예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing headMap() Method:");
// Using headMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.headMap("Fourth"));
// Using headMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.headMap("Fourth", true));
}
}
출력
TreeMap: {First=1, Fourth=4, Second=2, Third=3} Using headMap() Method: Without boolean value: {First=1} With boolean value: {First=1, Fourth=4}
tailMap(키, 부울 값)
tailMap()
메서드는 지정된 key에서 시작하는 트리맵의 모든 키/값 쌍을 반환합니다. (인수로 전달됨).
부울 값 선택적 매개변수입니다. 기본값은 true
입니다. .
false
인 경우 booleanValue로 전달됩니다. , 메서드에 지정된 key
의 키/값 쌍이 포함되지 않습니다. .
예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing tailMap() Method:");
// Using tailMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.tailMap("Second"));
// Using tailMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.tailMap("Second", false));
}
}
출력
TreeMap: {First=1, Fourth=4, Second=2, Third=3} Using tailMap() Method: Without boolean value: {Second=2, Third=3} With boolean value: {Third=3}
서브맵(k1, bV1, k2, bV2)
subMap()
메소드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k1 항목 포함 .
bV1 및 bV2 선택적 부울 매개변수입니다. bV1의 기본값 true
입니다. 및 기본값 bV2 false
입니다. .
false
인 경우 bV1로 전달됩니다. , 이 메서드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k1 항목을 포함하지 않고 .
true
인 경우 bV2로 전달됩니다. , 이 메서드는 k1 사이의 키와 관련된 모든 항목을 반환합니다. 및 k2 k2 항목 포함 .
예를 들어,
import java.util.TreeMap;
class Main {
public static void main(String[] args) {
TreeMap<String, Integer> numbers = new TreeMap<>();
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
System.out.println("\nUsing subMap() Method:");
// Using subMap() with default booleanValue
System.out.println("Without boolean value: " + numbers.subMap("Fourth", "Third"));
// Using subMap() with specified booleanValue
System.out.println("With boolean value: " + numbers.subMap("Fourth", false, "Third", true));
}
}
출력
TreeMap: {First=1, Fourth=2, Second=2, Third=3} Using subMap() Method: Without boolean value: {Fourth=4, Second=2} With boolean value: {Second=2, Third=3}<시간>
메소드 | 설명 |
---|---|
clone() | TreeMap 사본을 생성합니다. |
containsKey() | TreeMap 검색 지정된 키에 대해 부울 결과를 반환합니다. |
containsValue() | TreeMap 검색 지정된 값에 대해 부울 결과를 반환합니다. |
size() | TreeMap 의 크기를 반환합니다. |
clear() | TreeMap 에서 모든 항목을 제거합니다. |
위의 모든 예에서 트리맵 요소는 자연스럽게(오름차순) 정렬됩니다. 그러나 키 순서를 사용자 지정할 수도 있습니다.
이를 위해 트리맵에서 정렬된 키를 기반으로 자체 비교기 클래스를 만들어야 합니다. 예를 들어,
import java.util.TreeMap;
import java.util.Comparator;
class Main {
public static void main(String[] args) {
// Creating a treemap with a customized comparator
TreeMap<String, Integer> numbers = new TreeMap<>(new CustomComparator());
numbers.put("First", 1);
numbers.put("Second", 2);
numbers.put("Third", 3);
numbers.put("Fourth", 4);
System.out.println("TreeMap: " + numbers);
}
// Creating a comparator class
public static class CustomComparator implements Comparator<String> {
@Override
public int compare(String number1, String number2) {
int value = number1.compareTo(number2);
// elements are sorted in reverse order
if (value > 0) {
return -1;
}
else if (value < 0) {
return 1;
}
else {
return 0;
}
}
}
}
출력
TreeMap: {Third=3, Second=2, Fourth=4, First=1}
위의 예에서 CustomComparator를 전달하는 트리맵을 만들었습니다. 클래스를 인수로 사용합니다.
CustomComparator 클래스는 Comparator
을 구현합니다. 인터페이스.
그런 다음 compare()
를 재정의합니다. 요소를 역순으로 정렬하는 방법입니다.
자세한 내용은 Java Comparator(공식 Java 설명서)를 참조하십시오.
java
자바 트리셋 이 자습서에서는 예제를 통해 Java TreeSet 클래스와 다양한 작업 및 메서드에 대해 알아봅니다. TreeSet Java 컬렉션 프레임워크의 클래스는 트리 데이터 구조의 기능을 제공합니다. NavigableSet 인터페이스를 확장합니다. TreeSet 만들기 트리 세트를 생성하려면 java.util.TreeSet를 가져와야 합니다. 먼저 포장하십시오. 패키지를 가져오면 다음은 TreeSet을 만드는 방법입니다. 자바로. TreeSet<Integer> numbers = new TreeSe
일반적으로 Numbers로 작업할 때 byte, int, long, double 등과 같은 기본 데이터 유형을 사용합니다. 예시 int i = 5000; float gpa = 13.65f; double mask = 125; 그러나 개발 과정에서 기본 데이터 유형 대신 객체를 사용해야 하는 상황을 접하게 됩니다. 이를 달성하기 위해 Java는 래퍼 클래스를 제공합니다. . 모든 래퍼 클래스(Integer, Long, Byte, Double, Float, Short)는 추상 클래스 Number의 하위 클래스입니다. 래퍼 클래