当前位置: 首页 > article >正文

Java重修笔记 第四十八天 TreeSet 类、TreeMap 类

  • TreeSet 类

1. TreeSet 底层是 TreeMap

2. 使用默认构造器创建的 TreeSet 对象,添加顺序和取出顺序不是有序的

3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序

4. 可以在构造器中传入一个 Comparator 比较器来手动制定比较规则,之后传入的数据会根据改规则自动进行比较排序,如果根据比较器比较出的结果是相同的,即 compare() 方法返回0的话,判定相同的元素则不会添加到 TreeSet 中,这点尤为重要!

public class TreeSet01 {
    @SuppressWarnings("all")
    public static void main(String[] args) {

        TreeSet treeSet = new TreeSet(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                String s1 = (String) o1;
                String s2 = (String) o2;
                return s1.compareTo(s2);
            }
        });

        treeSet.add("jack");
        treeSet.add("tom");
        treeSet.add("sp");
        treeSet.add("bbb");
        treeSet.add("ccc");
        treeSet.add("a");
        treeSet.add("sp");

        System.out.println("treeSet = " + treeSet);

    }
}

运行结果:

3. TreeSet 类实现了 Set 接口,所以有着 Set 接口的特性,例如添加的值不可重复

  • TreeMap 类

1. 经过比较器比较,相同的 key 添加进去,会把旧的 value 替换为新的 value 

2. Key 和 Value 以 Entry 结点的方式存储在 TreeMap 中

3. 如果添加的是字符串或数字,它们默认会按照字母顺序或数值顺序进行排序

public class TreeMap01 {
    @SuppressWarnings("all")
    public static void main(String[] args) {
        TreeMap treeMap = new TreeMap(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return ((String) o1).length() - ((String) o2).length();
            }
        });

        treeMap.put("Jack", "杰克");
        treeMap.put("Tom", "汤姆");
        treeMap.put("Smith", "史密斯");
        treeMap.put("Super_Minion", "超级兵");
        treeMap.put("Alice", "替换"); // 替换

        System.out.println(treeMap);


    }
}

运行结果:


http://www.kler.cn/a/292695.html

相关文章:

  • AI大模型开发架构设计(18)——基于大模型构建企业知识库案例实战
  • 鸿蒙next版开发:ArkTS组件点击事件详解
  • 【JVM】关于JVM的内部原理你到底了解多少(八股文面经知识点)
  • C/C++精品项目之图床共享云存储(3):网络缓冲区类和main
  • AcWing 302 任务安排 斜率优化的dp
  • java导出pdf
  • 计算机毕设选题推荐-基于python的剧本杀预约服务平台【python-爬虫-大数据定制】
  • 人工智能在网络安全中的重要性
  • 一文讲懂扩散模型
  • 安装opengauss企业版单机流程
  • 【GD32】---- 使用GD32调试串口并实现printf打印输出
  • 修改服务器DNS解析及修改自动对时时区
  • 【Motion Forecasting】SIMPL:简单且高效的自动驾驶运动预测Baseline
  • AI时代来临,AI基础数据服务行业未来发展有哪些变化
  • 产品经理的学习笔记(全集)-持续更新
  • 基础算法题————散列/哈希/Hash
  • ElasticSearch-倒排索引 文档映射
  • 深入理解JavaScript闭包:避免常见的内存泄漏问题
  • 深度学习|模型推理:端到端任务处理
  • 【Netty】自定义网络通信协议
  • FFmpeg源码:avpriv_set_pts_info函数分析
  • SpringBoot 实战:SpringBoot整合Flink CDC,实时追踪mysql数据变动
  • Java简单实现服务器客户端通信
  • 0to1使用JWT实现登录认证
  • ubuntu24下安装pytorch3d
  • ARM 伪指令 (26)