Map集合的实现类TreeMap
时间: 2023-06-18 15:06:32 浏览: 96
是如何保证其中的元素按照键的自然顺序排序的?
TreeMap使用红黑树作为内部数据结构来存储键值对,红黑树是一种自平衡的二叉查找树,它能够保证树中的所有节点满足一定的平衡条件,从而使得树的高度不会超过log(N),其中N是树中元素的数目。在TreeMap中,每个元素都包含一个键和对应的值。当元素插入到红黑树中时,根据键的自然顺序来决定元素在树中的位置。具体来说,一开始根节点是黑色的,新节点插入时,按键值的大小查找插入位置,同时保证树的平衡条件不被破坏,插入节点时也会检查是否需要调整树的结构。因为红黑树的平衡条件,节点的插入和删除操作都需要对树进行一定的旋转和染色操作,以保证红黑树的平衡性和性质,从而能够保证元素按照键的自然顺序进行排序。
相关问题
java集合类之map的treemap
TreeMap是Java集合框架中的一种Map实现,它基于红黑树数据结构实现。TreeMap中的元素按照键的自然顺序或者自定义顺序进行排序,因此它是一个有序的Map。TreeMap提供了一系列的方法来操作Map中的元素,例如添加、删除、查找等。由于它是有序的,因此可以方便地进行范围查找和排序操作。但是,由于它是基于红黑树实现的,因此在插入、删除和查找操作中的时间复杂度为O(log n)。
新建Book书籍类,属性有:id,name,price,type,并将Book类存入map、TreeMap中。分别遍历由HashMap与TreeMap类实现的Map集合,输出书籍对象。
可以使用如下代码来实现:// 定义Book类
public class Book {
private int id;
private String name;
private double price;
private String type; // 省略getter和setter方法 @Override
public String toString(){
return "id:" + id + " name:" + name + " price:" + price + " type:" + type;
}
}// 创建Map集合
Map<Integer, Book> hashMap = new HashMap<>();
TreeMap<Integer, Book> treeMap = new TreeMap<>();// 添加元素
hashMap.put(1, new Book(1, "Java", 79.9, "计算机编程"));
hashMap.put(2, new Book(2, "Python", 69.9, "计算机编程"));
hashMap.put(3, new Book(3, "Web", 59.9, "计算机编程"));treeMap.put(1, new Book(1, "Java", 79.9, "计算机编程"));
treeMap.put(2, new Book(2, "Python", 69.9, "计算机编程"));
treeMap.put(3, new Book(3, "Web", 59.9, "计算机编程"));// 遍历HashMap
for(Map.Entry<Integer, Book> entry: hashMap.entrySet()){
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
}// 遍历TreeMap
for(Map.Entry<Integer, Book> entry: treeMap.entrySet()){
System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
}
阅读全文