자바 트리맵 클래스
Java TreeMap 클래스는 레드-블랙 트리 기반 구현입니다. 이는 정렬된 순서로 키-값 쌍을 저장하는 효율적인 수단을 제공합니다.
Java TreeMap 클래스의 중요한 점은 다음과 같습니다.
- Java TreeMap에는 키를 기반으로 하는 값이 포함됩니다. NavigableMap 인터페이스를 구현하고 AbstractMap 클래스를 확장합니다.
- Java TreeMap에는 고유한 요소만 포함되어 있습니다.
- Java TreeMap은 널 키를 가질 수 없지만 여러 널 값을 가질 수 있습니다.
- Java TreeMap이 동기화되지 않았습니다.
- Java TreeMap은 오름차순을 유지합니다.
TreeMap 클래스 선언
java.util.TreeMap 클래스 선언을 살펴보겠습니다.
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
TreeMap 클래스 매개변수
java.util.TreeMap 클래스의 매개변수를 살펴보겠습니다.
Java TreeMap 클래스의 생성자
| 건설자 | 설명 |
|---|---|
| 트리맵() | 키의 자연 순서를 사용하여 정렬되는 빈 트리 맵을 구성하는 데 사용됩니다. |
| TreeMap(비교기 비교기) | 비교기 comp를 사용하여 정렬될 빈 트리 기반 맵을 구성하는 데 사용됩니다. |
| 트리맵(Map m) | 다음의 항목으로 트리맵을 초기화하는 데 사용됩니다. 중 , 이는 키의 자연스러운 순서를 사용하여 정렬됩니다. |
| TreeMap(SortedMap m) | SortedMap의 항목으로 트리맵을 초기화하는 데 사용됩니다. sm , 와 같은 순서로 정렬됩니다. sm. |
Java TreeMap 클래스의 메소드
| 방법 | 설명 |
|---|---|
| 지도.입장한도입장(K키) | 지정된 키보다 크거나 같은 최소 키를 갖는 키-값 쌍을 반환하거나, 해당 키가 없는 경우 null을 반환합니다. |
| K천정열쇠(K키) | 지정된 키보다 큰 최소 키를 반환하거나 해당 키가 없는 경우 null을 반환합니다. |
| 무효 클리어() | 맵에서 모든 키-값 쌍을 제거합니다. |
| 객체 복제() | TreeMap 인스턴스의 얕은 복사본을 반환합니다. |
| 비교기 비교기() | 키를 순서대로 정렬하는 비교기를 반환하거나, 맵이 자연 순서를 사용하는 경우 null을 반환합니다. |
| NavigableSet 내림차순 키 세트() | 맵에 포함된 키의 역순 NavigableSet 뷰를 반환합니다. |
| NavigableMap 내림차순 지도() | 지정된 키-값 쌍을 내림차순으로 반환합니다. |
| Map.Entry firstEntry() | 가장 작은 키를 갖는 키-값 쌍을 반환합니다. |
| 지도.진입층입구(K키) | 지정된 키보다 작거나 같은 가장 큰 키를 반환하거나 해당 키가 없는 경우 null을 반환합니다. |
| void forEach(BiConsumer 작업) | 모든 항목이 처리되거나 작업에서 예외가 발생할 때까지 맵의 각 항목에 대해 지정된 작업을 수행합니다. |
| SortedMap headMap(K toKey) | 키가 toKey보다 엄격하게 작은 키-값 쌍을 반환합니다. |
| NavigableMap headMap(K toKey, 부울 포함) | 키가 toKey보다 작은(또는 포함이 true인 경우와 같음) 키-값 쌍을 반환합니다. |
| Map.Entry highEntry(K 키) | 주어진 키보다 엄격하게 큰 최소 키를 반환하거나, 그러한 키가 없으면 null을 반환합니다. |
| K하이키(K키) | 이 맵에 지정된 키에 대한 매핑이 포함되어 있으면 true를 반환하는 데 사용됩니다. |
| 키세트() 설정 | 맵에 존재하는 키 컬렉션을 반환합니다. |
| 지도.항목 lastEntry() | 가장 큰 키를 가진 키-값 쌍을 반환하거나, 그러한 키가 없으면 null을 반환합니다. |
| Map.Entry lowerEntry(K 키) | 주어진 키보다 엄격하게 작은 가장 큰 키와 연관된 키-값 매핑을 반환하거나, 그러한 키가 없는 경우 null을 반환합니다. |
| K하위키(K키) | 주어진 키보다 엄격하게 작은 가장 큰 키를 반환하거나, 그러한 키가 없으면 null을 반환합니다. |
| NavigableSet navigableKeySet() | 이 맵에 포함된 키의 NavigableSet 뷰를 반환합니다. |
| Map.Entry pollFirstEntry() | 이 맵의 최소 키와 연관된 키-값 매핑을 제거하고 반환하거나, 맵이 비어 있으면 null을 반환합니다. |
| Map.Entry pollLastEntry() | 이 맵에서 가장 큰 키와 연관된 키-값 매핑을 제거하고 반환하거나, 맵이 비어 있으면 null을 반환합니다. |
| V put(K 키, V 값) | 지정된 키와 함께 지정된 값을 맵에 삽입합니다. |
| void putAll(지도 맵) | 한 맵의 모든 키-값 쌍을 다른 맵으로 복사하는 데 사용됩니다. |
| V 대체(K 키, V 값) | 지정된 키에 대해 지정된 값을 대체합니다. |
| 부울 교체(K 키, V oldValue, V newValue) | 지정된 키의 이전 값을 새 값으로 바꿉니다. |
| void replacementAll(BiFunction 함수) | 모든 항목이 처리되거나 함수에서 예외가 발생할 때까지 각 항목의 값을 해당 항목에 대해 지정된 함수를 호출한 결과로 바꿉니다. |
| NavigableMap subMap(K fromKey, 부울 fromInclusive, K toKey, 부울 toInclusive) | 키 범위가 fromKey에서 toKey까지인 키-값 쌍을 반환합니다. |
| SortedMap 하위 맵(K fromKey, K toKey) | 키 범위가 fromKey(포함)에서 toKey(제외)까지인 키-값 쌍을 반환합니다. |
| SortedMap tailMap(K fromKey) | 키가 fromKey보다 크거나 같은 키-값 쌍을 반환합니다. |
| NavigableMap tailMap(K fromKey, 부울 포함) | 키가 fromKey보다 큰(또는 포함이 true인 경우 같음) 키-값 쌍을 반환합니다. |
| boolean containKey(객체 키) | 맵에 지정된 키에 대한 매핑이 포함되어 있으면 true를 반환합니다. |
| boolean containValue(객체 값) | 맵이 하나 이상의 키를 지정된 값에 매핑하면 true를 반환합니다. |
| K첫번째키() | 현재 정렬된 맵에 있는 첫 번째(가장 낮은) 키를 반환하는 데 사용됩니다. |
| V get(객체 키) | 맵이 지정된 키를 매핑하는 값을 반환하는 데 사용됩니다. |
| K 마지막키() | 현재 정렬된 맵에 있는 마지막(가장 높은) 키를 반환하는 데 사용됩니다. |
| V 제거(객체 키) | 맵에서 지정된 키의 키-값 쌍을 제거합니다. |
| 세트 | 지도에 포함된 매핑의 집합 보기를 반환합니다. |
| 정수 크기() | 해시테이블에 존재하는 키-값 쌍의 수를 반환합니다. |
| 컬렉션 값() | 맵에 포함된 값의 컬렉션 뷰를 반환합니다. |
자바 트리맵 예
import java.util.*; class TreeMap1{ public static void main(String args[]){ TreeMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } } Output:100 Amit 101 Vijay 102 Ravi 103 Rahul
Java TreeMap 예: 제거()
import java.util.*; public class TreeMap2 { public static void main(String args[]) { TreeMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); System.out.println('Before invoking remove() method'); for(Map.Entry m:map.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } map.remove(102); System.out.println('After invoking remove() method'); for(Map.Entry m:map.entrySet()) { System.out.println(m.getKey()+' '+m.getValue()); } } } 산출:
Before invoking remove() method 100 Amit 101 Vijay 102 Ravi 103 Rahul After invoking remove() method 100 Amit 101 Vijay 103 Rahul
Java TreeMap 예: NavigableMap
import java.util.*; class TreeMap3{ public static void main(String args[]){ NavigableMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); //Maintains descending order System.out.println('descendingMap: '+map.descendingMap()); //Returns key-value pairs whose keys are less than or equal to the specified key. System.out.println('headMap: '+map.headMap(102,true)); //Returns key-value pairs whose keys are greater than or equal to the specified key. System.out.println('tailMap: '+map.tailMap(102,true)); //Returns key-value pairs exists in between the specified key. System.out.println('subMap: '+map.subMap(100, false, 102, true)); } } descendingMap: {103=Rahul, 102=Ravi, 101=Vijay, 100=Amit} headMap: {100=Amit, 101=Vijay, 102=Ravi} tailMap: {102=Ravi, 103=Rahul} subMap: {101=Vijay, 102=Ravi} Java TreeMap 예: SortedMap
import java.util.*; class TreeMap4{ public static void main(String args[]){ SortedMap map=new TreeMap(); map.put(100,'Amit'); map.put(102,'Ravi'); map.put(101,'Vijay'); map.put(103,'Rahul'); //Returns key-value pairs whose keys are less than the specified key. System.out.println('headMap: '+map.headMap(102)); //Returns key-value pairs whose keys are greater than or equal to the specified key. System.out.println('tailMap: '+map.tailMap(102)); //Returns key-value pairs exists in between the specified key. System.out.println('subMap: '+map.subMap(100, 102)); } } headMap: {100=Amit, 101=Vijay} tailMap: {102=Ravi, 103=Rahul} subMap: {100=Amit, 101=Vijay} HashMap과 TreeMap의 차이점은 무엇입니까?
| 해시맵 | 트리맵 |
|---|---|
| 1) HashMap은 하나의 널 키를 포함할 수 있습니다. | TreeMap에는 null 키가 포함될 수 없습니다. |
| 2) HashMap은 순서를 유지하지 않습니다. | TreeMap은 오름차순을 유지합니다. |
Java TreeMap 예: 도서
import java.util.*; class Book { int id; String name,author,publisher; int quantity; public Book(int id, String name, String author, String publisher, int quantity) { this.id = id; this.name = name; this.author = author; this.publisher = publisher; this.quantity = quantity; } } public class MapExample { public static void main(String[] args) { //Creating map of Books Map map=new TreeMap(); //Creating Books Book b1=new Book(101,'Let us C','Yashwant Kanetkar','BPB',8); Book b2=new Book(102,'Data Communications & Networking','Forouzan','Mc Graw Hill',4); Book b3=new Book(103,'Operating System','Galvin','Wiley',6); //Adding Books to map map.put(2,b2); map.put(1,b1); map.put(3,b3); //Traversing map for(Map.Entry entry:map.entrySet()){ int key=entry.getKey(); Book b=entry.getValue(); System.out.println(key+' Details:'); System.out.println(b.id+' '+b.name+' '+b.author+' '+b.publisher+' '+b.quantity); } } } 산출:
1 Details: 101 Let us C Yashwant Kanetkar BPB 8 2 Details: 102 Data Communications & Networking Forouzan Mc Graw Hill 4 3 Details: 103 Operating System Galvin Wiley 6