Java TreeMap
1 什么是Java TreeMap
Java TreeMap类是基于红黑树的实现。它提供了一种有效的方法来按排序顺序存储键值对。
关于Java TreeMap类的核心要点是:
- Java TreeMap存储key-value对。它实现了NavigableMap接口并继承了AbstractMap类。
- Java TreeMap不能存储重复元素。
- Java TreeMap不能包含一个null键,但是可以包含多个null值。
- Java TreeMap是非同步(线程不安全的)。
- Java TreeMap元素是有序的(升序)。
2 Java TreeMap的语法
public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, Serializable
3 Java TreeMap的构造方法
构造方法 | 描述 |
---|---|
TreeMap() | 用于构造一个空的TreeMap,该TreeMap将使用其键的自然顺序进行排序。 |
TreeMap(Comparator<? super K> comparator) | 用于构造一个空TreeMap,该TreeMap将使用比较器进行排序。 |
TreeMap(Map<? extends K,? extends V> m) | 用于指定Map的条目来初始化TreeMap,该TreeMap将使用键的自然顺序进行排序。 |
TreeMap(SortedMap<K,? extends V> m) | 用于使用SortedMap中的条目初始化TreeMap,这些条目将以与SortedMap相同的顺序排序。 |
4 Java TreeMap的方法
5 Java TreeMap的例子
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java TreeMap的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
TreeMap<Integer,String> map=new TreeMap<Integer,String>();
map.put(100,"Eric");
map.put(102,"Jack");
map.put(101,"Mark");
map.put(103,"Rose");
for(Map.Entry m:map.entrySet()){
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
输出结果为:
100 Eric
101 Mark
102 Jack
103 Rose
6 Java TreeMap的例子:remove()
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java TreeMap的例子
*/
import java.util.*;
public class Demo {
public static void main(String args[]) {
TreeMap<Integer,String> map=new TreeMap<Integer,String>();
map.put(100,"Eric");
map.put(102,"Jack");
map.put(101,"Rose");
map.put(103,"Lucy");
System.out.println("执行remove()方法前");
for(Map.Entry m:map.entrySet())
{
System.out.println(m.getKey()+" "+m.getValue());
}
map.remove(102);
System.out.println("执行remove()方法后");
for(Map.Entry m:map.entrySet())
{
System.out.println(m.getKey()+" "+m.getValue());
}
}
}
输出结果为:
执行remove()方法前
100 Eric
101 Rose
102 Jack
103 Lucy
执行remove()方法后
100 Eric
101 Rose
103 Lucy
7 Java TreeMap的例子:NavigableMap
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java TreeMap的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
NavigableMap<Integer,String> map=new TreeMap<Integer,String>();
map.put(100,"Eric");
map.put(102,"Jack");
map.put(101,"Mark");
map.put(103,"Rose");
//保持降序
System.out.println("descendingMap: "+map.descendingMap());
//返回键值小于或等于指定键的键值对。
System.out.println("headMap: "+map.headMap(102,true));
//返回键值大于或等于指定键的键值对。
System.out.println("tailMap: "+map.tailMap(102,true));
//返回键值对存在于指定键之间。
System.out.println("subMap: "+map.subMap(100, false, 102, true));
}
}
输出结果为:
descendingMap: {103=Rose, 102=Jack, 101=Mark, 100=Eric}
headMap: {100=Eric, 101=Mark, 102=Jack}
tailMap: {102=Jack, 103=Rose}
subMap: {101=Mark, 102=Jack}
8 Java TreeMap的例子:SortedMap
package com.yiidian;
/**
* 一点教程网: http://www.yiidian.com
*/
/**
* Java TreeMap的例子
*/
import java.util.*;
class Demo{
public static void main(String args[]){
SortedMap<Integer,String> map=new TreeMap<Integer,String>();
map.put(100,"Eric");
map.put(102,"Jack");
map.put(101,"Paul");
map.put(103,"Lucas");
//返回键小于指定键的键值对。
System.out.println("headMap: "+map.headMap(102));
//返回键值大于或等于指定键的键值对。
System.out.println("tailMap: "+map.tailMap(102));
//返回键值对存在于指定键之间。
System.out.println("subMap: "+map.subMap(100, 102));
}
}
输出结果为:
headMap: {100=Eric, 101=Paul}
tailMap: {102=Jack, 103=Lucas}
subMap: {100=Eric, 101=Paul}
9 HashMap和TreeMap的区别
HashMap | TreeMap |
---|---|
HashMap可以包含一个Null键。 | TreeMap不能包含任何Null键。 |
HashMap的元素是无序的。 | TreeMap的元素是有序的(升序)。 |
热门文章
优秀文章