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

TreeMap、TreeSet和HashMap、HashSet

目录

一、TreeMap&TreeSet

1.数据结构:

2.时间复杂度:

3.键/元素: 

4.TreeMap基本操作: (与 HashMap 类似,但 put, get, remove 等操作会根据键的顺序进行):

5.TreeMap遍历:

 6.TreeSet基本操作 (与 HashSet 类似,但 add, remove 等操作会根据元素的自然顺序或比较器顺序进行):

7.TreeSet遍历:

二、HashMap&HashSet

1.数据结构:

2.时间复杂度:

3.键/元素:

4.HashMap基本操作:

5.HashMap遍历:

6.HashSet基本操作:

7.HashSet遍历:

三、总结:


一、TreeMap&TreeSet

1.数据结构:

TreeMap和TreeSet是基于红黑树(平衡二叉查找树)实现

2.时间复杂度:

插入、删除和查找的时间复杂度是O(log n)

3.键/元素: 

不允许使用 null 键 (仅 TreeMap) 和 null 元素 (仅 TreeSet),因为无法比较 null 与其他元素的大小。

4.TreeMap基本操作: (与 HashMap 类似,但 putgetremove 等操作会根据键的顺序进行):

put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对

5.TreeMap遍历:

keySet(): 返回所有键的 Set 视图 (有序)。
values(): 返回所有值的 Collection 视图 (有序)。
entrySet(): 返回所有键值对的 Set 视图 (有序)。
firstKey(): 返回当前 Map 中最小键。
lastKey(): 返回当前 Map 中最大键。 

例子如下:

import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class HashMapExample {public static void main(String[] args) {// 创建一个 HashMapMap<String, Integer> hashMap = new HashMap<>();// 添加一些键值对hashMap.put("apple", 1);hashMap.put("banana", 2);hashMap.put("cherry", 3);// 使用 entrySet() 遍历 HashMapSet<Map.Entry<String, Integer>> entrySet = hashMap.entrySet();for (Map.Entry<String, Integer> entry : entrySet) {// 获取键和值String key = entry.getKey();Integer value = entry.getValue();// 打印键和值System.out.println("Key: " + key + ", Value: " + value);}}
}

 6.TreeSet基本操作 (与 HashSet 类似,但 addremove 等操作会根据元素的自然顺序或比较器顺序进行):

add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。

7.TreeSet遍历:

iterator(): 返回集合的迭代器 (有序)。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作 (有序)。 

二、HashMap&HashSet

1.数据结构:

基于哈希表实现 

2.时间复杂度:

插入、删除和查找的平均时间复杂度是 O(1),但在最坏情况下是 O(n) (发生哈希碰撞时)

3.键/元素:

 允许使用 null 值和 null 键 (仅 HashMap)。

4.HashMap基本操作:

put(K key, V value): 插入键值对。
get(Object key): 根据键获取值。
remove(Object key): 根据键删除键值对。
containsKey(Object key): 判断是否包含指定的键。
containsValue(Object value): 判断是否包含指定的值。
size(): 获取键值对的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有键值对。 

5.HashMap遍历:

keySet(): 返回所有键的 Set 视图。
values(): 返回所有值的 Collection 视图。
entrySet(): 返回所有键值对的 Set 视图。 

6.HashSet基本操作:

add(E e): 添加元素。
remove(Object o): 删除指定元素。
contains(Object o): 判断是否包含指定元素。
size(): 获取元素的数量。
isEmpty(): 判断是否为空。
clear(): 清空所有元素。 

7.HashSet遍历:

iterator(): 返回集合的迭代器。
forEach(Consumer<? super E> action): 对每个元素执行给定的操作。 

三、总结:

http://www.xdnf.cn/news/10009.html

相关文章:

  • PCB设计实践(三十一)PCB设计中机械孔的合理设计与应用指南
  • 【Java学习笔记】接口
  • 解决开发者技能差距:AI 在提升效率与技能培养中的作用
  • 00 QEMU源码中文注释与架构讲解
  • 领域驱动设计 (Domain-Driven Design, DDD)
  • MyBatis操作数据库
  • Vue3使用vue-web-screen-shot实现截图功能
  • Windows SSDT Hook(二)
  • 【软件设计】通过软件设计提高 Flash 的擦写次数
  • 每日Prompt:指尖做画
  • kuboard自带ETCD存储满了处理方案
  • (21)量子计算对密码学的影响
  • EasyExcel复杂Excel导出
  • 测试用例篇章
  • C语言创意编程:用趣味实例玩转基础语法(4)
  • CIO大会, AI课笔记手稿分享
  • VScode ios 模拟器安装cocoapods
  • Java Spring Boot 自定义注解详解与实践
  • `docker commit` 和 `docker save`区别
  • 每日c/c++题 备战蓝桥杯(P1011 [NOIP 1998 提高组] 车站)
  • 论文速读《UAV-Flow Colosseo: 自然语言控制无人机系统》
  • If possible, you should set the Secure flag for these cookies 修复方案
  • 操作系统原理第8章:文件管理 重点内容
  • 2025.05.30【转录组】|Ribo-seq数据流程详解(一 质量控制)
  • split_conversion将json转成yolo训练用的txt,在直接按照8:1:1的比例分成训练集,测试集,验证集
  • RuoYi前后端分离框架集成手机短信验证码(二)之前端篇
  • 学习vue3阶段性复习(插槽,Pinia,生命周期)
  • VSCode+Cline 安装配置及使用说明
  • vue+threeJs 绘制3D圆形
  • Linux 的主要时钟类型