c++ map是有序还是无序的_Map!你真的学会了嘛?

本文探讨了C++中Map的有序特性,解释了Map如何通过哈希函数和链表存储数据,以及如何通过put和get操作进行元素的添加和查找。同时,文章提到了Java中的HashMap,讨论了其初始化、扩容机制和元素插入的逻辑。此外,还介绍了Java中TreeSet的三种排序方式,包括实现Comparable接口、自定义比较器和匿名内部类,供读者根据需求选择合适的实现方式。
摘要由CSDN通过智能技术生成

起步我们需要了解,到底什么是Map

众所周知,map用于保存具有映射关系的数据,Map集合里保存着两组值,一组用于保存Map的key,另一组保存着Map的value。所有的key是不能重复的并且没有顺序

31a0b7843c3265e8f573a0d542d03512.png

简单了解完毕后,我们需要知道一些常见的Map集合 HashMap 1 .HashMap的底层是一个哈希表/散列表的数据结构 JDK8之后,如果哈希表单向链表中的元素超过8个,单向链表将变成红黑树,当红黑树的节点数量小于6时,会重新把红黑树变成单向链表,那么问题来了! 什么是哈希表/散列表呢?     说到这,我们又需要回顾一些简单的数据结构 数组 :采用一段连续的储存单元来储存数据。对于指定下标的查找,时间复杂度为O(1),通过给定值进行查找,我们需要遍历数组,所以时间复杂度为O(n),对于一般的插入删除操作,因为数组元素要进行移动,所以时间复杂度也为O(n)。 线性链表 :对于链表的新增,删除等操作,因为链表的特殊性,仅需处理节点引用,所以时间复杂度为O(1),而要进行查找操作需要遍历链表,复杂度为O(n)。 二叉树 :对于一 颗相对平衡的有序二叉树,对其进行插入,查找,删除等操作平均复杂度为O(logn)。 哈希表 :相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能非常高,在不考虑哈希冲突下,仅需一次定位就能完成,时间复杂度为O(1)。 众所周知,数据结构的 物理储存结构 只有两种: 顺序储存结构和链式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值