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

news/2025/1/15 18:46:31/
  • 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() {@Overridepublic 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() {@Overridepublic 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.ppmy.cn/news/1521982.html

相关文章

【最新整理】大佬都在用的10款3DMax建筑插件!

在3Dmax建筑领域中,有许多受欢迎的插件能够大大提升设计师的工作效率和创作质量。以下是10款被广泛应用且备受推崇的3Dmax建筑插件: 1.Building(建筑设计插件) 3DMAX参数化建筑建模插件Building,一键生成各种自定义参…

机器人外呼有哪些优势?

机器人外呼,作为一种结合了计算机技术和人工智能技术的自动化工具,具有多重显著优势。以下是其主要优势的详细阐述: ### 1. 高效性 * **大幅提升工作效率**:机器人外呼可以全天候、不间断地进行工作,不受时间、地点和…

Fréchet Inception Distance(FID)原理

原理概述: FID 的核心思想是通过比较真实图像和生成图像在 Inception 模型特征空间中的分布差异,来评估生成模型的性能。它假设从真实数据和生成数据中提取的特征都近似服从高斯分布。 具体步骤: 特征提取:使用预训练的 Incepti…

ansible--yaml

语法 #列表 fruits:-Apple-Orange-banada########################################### fruits顶格写,下面的参数空两个空格,必须得对齐 #字典martin: name: Mysqlenvironoment: dd################################ 第一行的冒号号有空格,…

【网络安全】CSRF漏洞—CSRF基础漏洞防御

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的网络安全攻击手段,它利用用户已经认证的身份,通过第三方网站诱导用户点击链接或提交表单,从而在用户不知情的情况下,以用户的名义执…

redis分布式锁和lua脚本

业务场景:多个线程对共同资源的访问:库存超卖/用户重复下单的原因 解决方法一:利用jvm内置锁,将非原子性操作变成原子性操作 Synchronized锁的是对象,对象必须是单例的。锁的是this,代表当前所在的类,这个…

06_React ajax

React ajax 一、理解1、前置说明2、常用的 ajax 请求库浏览器插件推荐 二、axios1、跨域实际上是请求发出了,但是没有接收到数据。使用代理服务器进行解决2、React 脚手架配置代理2.1 前端项目在 package.json 中的文件添加配置,可以解决跨域2.2 方式二2…

工厂模式与策略模式(golang示例)

一、工厂模式简介 工厂模式是一种创建型设计模式,主要用于封装对象的创建过程。通过使用工厂模式,客户端代码无需直接实例化对象,而是通过工厂类来创建对象。这样可以将对象的创建与使用分离,从而提高代码的灵活性。 1.1 工厂模…