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

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): 对每个元素执行给定的操作。 

三、总结:

相关文章:

  • PHP 垃圾回收机制解析与应用案例
  • Java线程安全解决方案全面指南
  • Linux入门——入门常用基础指令(3)
  • 贫血模型与充血模型:架构设计的分水岭
  • 分库分表内容
  • 智能制造全场景数字化解决方案
  • 跨境电商每周信息差—5.26-5.30
  • 换行符在markdown格式时异常2
  • Ollama(1)知识点配置篇
  • 保险行业数字化应用解决方案
  • DiTAR: Diffusion Transformer Autoregressive Modeling for Speech Generation
  • 网易 - 灵犀办公文档
  • 【术语扫盲】BSP与MSP
  • React 事件处理与合成事件机制揭秘
  • 前端基础之《Vue(17)—路由集成》
  • 正点原子Z20 ZYNQ ​​​开发板​​发布!板载FMC LPC、LVDS LCD和WIFI蓝牙等接口,资料丰富!
  • LangChain表达式(LCEL)实操案例1
  • MathWorks无法注册,显示no healthy upstream(已解决)
  • PyQt6基础_QCharts绘制饼状图
  • 【nn.GroupNorm】
  • 美食网站建设规划书需求分析/简单免费制作手机网站
  • 网站空间买多大的/谷歌关键词搜索量数据查询
  • 中国建设银行网站签名通下载/汕头网站设计
  • 做视频用的网站有哪些/核心关键词和长尾关键词举例
  • WordPress多人聊天插件/黑帽seo什么意思
  • 做婚庆的网站/怎么建个人网站