📅  最后修改于: 2020-10-12 10:07:57             🧑  作者: Mango
Java TreeMap类是基于红黑树的实现。它提供了一种有效的方式来按排序顺序存储键值对。
关于Java TreeMap类的要点是:
让我们来看一下java.util.TreeMap类的声明。
public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, Serializable
让我们看一下java.util.TreeMap类的参数。
Constructor | Description |
---|---|
TreeMap() | It is used to construct an empty tree map that will be sorted using the natural order of its key. |
TreeMap(Comparator super K> comparator) | It is used to construct an empty tree-based map that will be sorted using the comparator comp. |
TreeMap(Map extends K,? extends V> m) | It is used to initialize a treemap with the entries from m, which will be sorted using the natural order of the keys. |
TreeMap(SortedMap |
It is used to initialize a treemap with the entries from the SortedMap sm, which will be sorted in the same order as sm. |
Method | Description |
---|---|
Map.Entry |
It returns the key-value pair having the least key, greater than or equal to the specified key, or null if there is no such key. |
K ceilingKey(K key) | It returns the least key, greater than the specified key or null if there is no such key. |
void clear() | It removes all the key-value pairs from a map. |
Object clone() | It returns a shallow copy of TreeMap instance. |
Comparator super K> comparator() | It returns the comparator that arranges the key in order, or null if the map uses the natural ordering. |
NavigableSet |
It returns a reverse order NavigableSet view of the keys contained in the map. |
NavigableMap |
It returns the specified key-value pairs in descending order. |
Map.Entry |
It returns the key-value pair having the least key. |
Map.Entry |
It returns the greatest key, less than or equal to the specified key, or null if there is no such key. |
void forEach(BiConsumer super K,? super V> action) | It performs the given action for each entry in the map until all entries have been processed or the action throws an exception. |
SortedMap |
It returns the key-value pairs whose keys are strictly less than toKey. |
NavigableMap |
It returns the key-value pairs whose keys are less than (or equal to if inclusive is true) toKey. |
Map.Entry |
It returns the least key strictly greater than the given key, or null if there is no such key. |
K higherKey(K key) | It is used to return true if this map contains a mapping for the specified key. |
Set |
It returns the collection of keys exist in the map. |
Map.Entry |
It returns the key-value pair having the greatest key, or null if there is no such key. |
Map.Entry |
It returns a key-value mapping associated with the greatest key strictly less than the given key, or null if there is no such key. |
K lowerKey(K key) | It returns the greatest key strictly less than the given key, or null if there is no such key. |
NavigableSet |
It returns a NavigableSet view of the keys contained in this map. |
Map.Entry |
It removes and returns a key-value mapping associated with the least key in this map, or null if the map is empty. |
Map.Entry |
It removes and returns a key-value mapping associated with the greatest key in this map, or null if the map is empty. |
V put(K key, V value) | It inserts the specified value with the specified key in the map. |
void putAll(Map extends K,? extends V> map) | It is used to copy all the key-value pair from one map to another map. |
V replace(K key, V value) | It replaces the specified value for a specified key. |
boolean replace(K key, V oldValue, V newValue) | It replaces the old value with the new value for a specified key. |
void replaceAll(BiFunction super K,? super V,? extends V> function) | It replaces each entry’s value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception. |
NavigableMap |
It returns key-value pairs whose keys range from fromKey to toKey. |
SortedMap |
It returns key-value pairs whose keys range from fromKey, inclusive, to toKey, exclusive. |
SortedMap |
It returns key-value pairs whose keys are greater than or equal to fromKey. |
NavigableMap |
It returns key-value pairs whose keys are greater than (or equal to, if inclusive is true) fromKey. |
boolean containsKey(Object key) | It returns true if the map contains a mapping for the specified key. |
boolean containsValue(Object value) | It returns true if the map maps one or more keys to the specified value. |
K firstKey() | It is used to return the first (lowest) key currently in this sorted map. |
V get(Object key) | It is used to return the value to which the map maps the specified key. |
K lastKey() | It is used to return the last (highest) key currently in the sorted map. |
V remove(Object key) | It removes the key-value pair of the specified key from the map. |
Set |
It returns a set view of the mappings contained in the map. |
int size() | It returns the number of key-value pairs exists in the hashtable. |
Collection |
It returns a collection view of the values contained in the map. |
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
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
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}
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 can contain one null key. | TreeMap cannot contain any null key. |
2) HashMap maintains no order. | TreeMap maintains ascending order. |
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