Java 集合框架TreeMap
原文:https://www.studytonight.com/java/treemap-in-collection-framework.php
TreeMap 类是基于红黑树的 Map 接口的实现。它提供了一种以排序顺序存储键值对的有效方法。
它类似于 HashMap 类,只是它是按照键的升序排序的。由于其不同步的性质,它不适合线程安全操作。
它实现了导航映射接口并扩展了抽象映射类。下面给出了这个类的声明。
TreeMap
声明
public class TreeMap<K,V>extends AbstractMap<K,V>implements NavigableMap<K,V>, Cloneable, Serializable
要点:
- 它只包含独特的元素。
- 它不能有空键,但可以有多个空值。
- 它是非同步的。
- 它保持升序。
TreeMap
构造器
| 构造器 | 描述 |
| 树状目录() | 它使用键的自然顺序创建一个新的空TreeMap
。 |
| TreeMap
(Comparator
super K>Comparator
) | 它创建了一个新的空TreeMap
,根据给定的Comparator
排序。 |
| TreeMap
(映射) extends K,? extends V> | 它会创建一个新的TreeMap
,其中包含与给定映射相同的映射。 |
| TreeMap(黑白文件夹) | 它创建了一个包含 sortedamp 的新TreeMap
。 |
示例:创建TreeMap
让我们举一个例子来理解最初为空的 treeMap 的创建。
class Demo
{
public static void main(String args[])
{
// Creating TreeMap
TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
// Displaying TreeMap
System.out.println(treeMap);
}
}
{}
TreeMap
方法
此表包含可用于操作对象的TreeMap
方法。
| 映射。入口TreeMap
实例的浅拷贝。 |
| Comparator
super K>Comparator
() | 它返回按顺序排列键的Comparator
,如果映射使用自然顺序,则返回 null。 |
| 导航集TreeMap
中存在的键值对的数量。 |
| 集合值() | 它返回映射中包含的值的集合视图。 |
示例:向TreeMap
添加元素
创建TreeMap
后,让我们向其中添加元素。我们使用 put 方法插入元素,该方法需要两个参数:第一个是键,第二个是值。
class Demo
{
public static void main(String args[])
{
// Creating TreeMap
TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
// Adding elements
treeMap.put("a",100);
treeMap.put("b",200);
treeMap.put("c",300);
treeMap.put("d",400);
// Displaying TreeMap
System.out.println(treeMap);
}
{a=100,b=200,c=300,d=400}
获取 LinkedHashMap 中的第一个和最后一个键
我们可以使用 firstEntry()和 lastEntry()方法获取映射的第一个和最后一个元素。它返回一对键和值。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating TreeMap
TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
// Adding elements
treeMap.put("a",100);
treeMap.put("b",200);
treeMap.put("c",300);
treeMap.put("d",400);
// Displaying TreeMap
System.out.println(treeMap);
// First Element
System.out.println("First Element: "+treeMap.firstEntry());
// Last Element
System.out.println("Last Element: "+treeMap.lastEntry());
}
}
{a=100,b=200,c=300,d=400}第一个元素:a=100 最后一个元素:d=400
示例:查找TreeMap
的头图和尾图
我们可以使用头映射()和尾映射()方法来获取TreeMap
的头元素和尾元素。这些方法返回包含元素的映射。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating TreeMap
TreeMap<String,Integer> treeMap = new TreeMap<String,Integer>();
// Adding elements
treeMap.put("a",100);
treeMap.put("b",200);
treeMap.put("c",300);
treeMap.put("d",400);
// Displaying TreeMap
System.out.println(treeMap);
// Head Map
System.out.println("Head Map: "+treeMap.headMap("c"));
// Tail Map
System.out.println("Tail Map: "+treeMap.tailMap("c"));
}
}
{a=100,b=200,c=300,d=400}头部图:{a=100,b=200}尾部图:{c=300,d=400}
示例:迭代TreeMap
在这个例子中,我们正在创建TreeMap
来存储数据。它使用树来存储数据,数据总是按照排序的顺序,并使用循环来迭代映射。见下面的例子。
import java.util.*;
class Demo
{
public static void main(String args[])
{
TreeMap<String,Integer> tm = new TreeMap<String,Integer>();
tm.put("a",100);
tm.put("b",200);
tm.put("c",300);
tm.put("d",400);
Set<Map.Entry<String,Integer>> st = tm.entrySet();
for(Map.Entry<String,Integer> me:st)
{
System.out.print(me.getKey()+":");
System.out.println(me.getValue());
}
}
}
a:100 b:200 c:300 d:400