TreeMap的使用和底层

这篇博客介绍了如何在Java中使用TreeMap及其底层原理,它实现了SortedMap接口。TreeSet实际上也依赖于TreeMap。文章通过一个示例展示了如何定制比较器来按学生姓名排序,并进行键值对的插入和遍历。同时,提醒了读者不要使用null作为键,因为这可能导致NullPointerException。
摘要由CSDN通过智能技术生成

TreeMap

  1. TreeMap在SortedMap接口下.

  2. TreeSet底层也是调用的TreeMap

    HashSet

    add

  3. 用法和TreeSet一样,不过变成键值对

  4. 可以用定制比较器

package com.li.changGe.maps;

import com.li.changGe.pojo.Student;

import java.util.*;

/**
 * TreeMap在SortedMap接口下.
 * TreeSet底层也是调用的TreeMap
 *
 * 用法和TreeSet一样,不过变成键值对
 */
public class TreeMapDemo01 {

  public static void main(String[] args) {
    //定制比较器  
    TreeMap<Student,String> treeMap = new TreeMap<>(new Comparator<Student>() {
      @Override
      public int compare(Student o1, Student o2) {
        return o1.name.compareTo(o2.name);
      }
    });

    Student student = new Student("长歌",18,'女');
    Student student1 = new Student("世民",22,'男');
    Student student2 = new Student("则天",20,'女');

    treeMap.put(student,"燕京");
    treeMap.put(student1,"长安");
    treeMap.put(student2,"静安");
  //-------------------------------------------------
    /**
     * 也是重复后覆盖
     * 最好不要用null做键,因为要调用compareTo方法比较
     * 会NullPointException
     */
    treeMap.put(new Student("长歌",18,'女'),"北凉");
    //treeMap.put(null,null);

    Set<Map.Entry<Student, String>> entries = treeMap.entrySet();
  //-------------------------------------------------

    /**
     * Student{name='世民', age=22, sex=男}
     * -长安
     * Student{name='则天', age=20, sex=女}
     * -静安
     * Student{name='长歌', age=18, sex=女}
     * -北凉
     */
    Iterator<Map.Entry<Student, String>> iterator1 = entries.iterator();
    while (iterator1.hasNext()){
      Map.Entry<Student, String> next = iterator1.next();
      System.out.println(next.getKey()+"-"+next.getValue());
    }

  }

}

TreeMap

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloses

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值