Java TreeMap 클래스는 레드-블랙 트리 기반 구현입니다. 이는 정렬된 순서로 키-값 쌍을 저장하는 효율적인 수단을 제공합니다.
Java TreeMap 클래스의 중요한 점은 다음과 같습니다.
- Java TreeMap에는 키를 기반으로 하는 값이 포함됩니다. NavigableMap 인터페이스를 구현하고 AbstractMap 클래스를 확장합니다.
- Java TreeMap에는 고유한 요소만 포함되어 있습니다.
- Java TreeMap은 널 키를 가질 수 없지만 여러 널 값을 가질 수 있습니다.
- Java TreeMap이 동기화되지 않았습니다.
- Java TreeMap은 오름차순을 유지합니다.
TreeMap 클래스 선언
java.util.TreeMap 클래스 선언을 살펴보겠습니다.
봄 MVC
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