JAVA高级基础(15)---TreeMap

TreeMap是一个有序的键值对集合,实现基于红黑树,提供自然顺序或自定义Comparator排序。它不依赖key的hashCode和equals方法,而是通过比较器保证键的有序性。虽然查询、插入、删除操作效率低于HashMap,但当需要排序的键值对时,TreeMap是理想选择。TreeMap不允许key为null,且非线程安全,需外部同步。
摘要由CSDN通过智能技术生成

TreeMap


TreeMap的原理

TreeMap是一个有序的key-value集合,基于红黑树的 Navigable 实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的Comparator 进行排序

红黑树

  1. 根节点是黑色
  2. 每个节点都只能是红色或者黑色
  3. 每个叶节点(NIL节点,空节点)是黑色的。
  4. 如果一个节点是红色的,则它两个子节点都是黑色的,也就是说在一条路径上不能出现两个红色的节点。
  5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

    

  • TreeMap存储 Key-Value对时,需要根据Key对key-value对进行排序。TreeMap可以保证所有的Key-Value对处于有序状态
  • TreeMap的Key的排序:TreeSet集合默认会进行排序。因此必须有排序,如果没有就会报类型转换异常。
package org.lanqiao.treemap.demo;

public class Student implements Comparable{
	private String name;
	private Integer age;
	public Student() {
	}
	public Student(String name, Integer age) {
		this.name = name;
		this.age = age;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Student [name=" + name + ", age=" + age + "]";
	}
	@Override
	public int compareTo(Object o) {
//		先根据年龄进行排序,如果年龄相同,则使用姓名进行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值