红黑树HashSetMap
1 红黑树
红黑树不是高度平衡的,它的平衡是通过"红黑规则"进行实现的 规则如下:
每一个节点或是红色的,或者是黑色的。
根节点必须是黑色
如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的;
如果某一个节点是红色,那么它的子节点必须是黑色(不能出现两个红色节点相连的情况)
对每一个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点;
2. HashSet
哈希值:是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值(所以是自定义对象时要重写hashCode)
3. Map
3.1特点
Map集合的特点
双列集合,一个键对应一个值
键不可以重复,值可以重复
3.2方法
3.2.1基本方法
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素 |
V remove(Object key) | 根据键删除键值对元素 |
void clear() | 移除所有的键值对元素 |
boolean containsKey(Object key) | 判断集合是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度,也就是集合中键值对的个数 |
3.2获取方法
方法名 | 说明 |
---|---|
V get(Object key) | 根据键获取值 |
Set<K> keySet() | 获取所有键的集合 |
Collection<V> values() | 获取所有值的集合 |
Set<Map.Entry<K,V>> entrySet() | 获取所有键值对对象的集合 |
4. 两种遍历方式
4.1 KeySet()键的遍历
Set<String> keySet = map.keySet();//遍历键的集合,获取到每一个键。用增强for实现for (String key : keySet) {//根据键去找值。用get(Object key)方法实现String value = map.get(key);System.out.println(key + "," + value);} //个人更喜欢用Lambda map.forEach((key,value)-> System.out.println(key+","+value));
4.2键值对遍历
//获取所有键值对对象的集合Set<Map.Entry<String, String>> entrySet = map.entrySet();//遍历键值对对象的集合,得到每一个键值对对象for (Map.Entry<String, String> me : entrySet) {//根据键值对对象获取键和值String key = me.getKey();String value = me.getValue();System.out.println(key + "," + value);}
红黑树HashSetMap相关推荐
- AVL树、splay树(伸展树)和红黑树比较
AVL树.splay树(伸展树)和红黑树比较 一.AVL树: 优点:查找.插入和删除,最坏复杂度均为O(logN).实现操作简单 如过是随机插入或者删除,其理论上可以得到O(logN)的复杂度,但是实 ...
- PAT (Advanced Level) 1132~1135:1132 模拟 1133模拟(易超时!) 1134图 1135红黑树
1132 Cut Integer(20 分) 题意:将一个含K(K为偶数)个数字的整数Z割分为A和B两部分,若Z能被A*B整除,则输出Yes,否则输出No. 分析:当A*B为0的时候,不能被Z整除,输 ...
- 数据结构Java版之红黑树(八)
红黑树是一种自动平衡的二叉查找树,因为存在红黑规则,所以有效的防止了二叉树退化成了链表,且查找和删除的速度都很快,时间复杂度为log(n). 什么是红黑规则? 1.根节点必须是黑色的. 2.节点颜色要 ...
- 算法基础知识科普:8大搜索算法之红黑树(下)
这是介绍红黑树的最后一部分,令y为要删除结点,n为要删除结点的子结点(子结点最多有1个),w为y的兄弟结点,删除操作的重点是使红黑树删除结点并通过调整后仍满足自身是搜索二叉树和设定的三点规则.删除操作 ...
- 算法基础知识科普:8大搜索算法之红黑树(中)
红黑树也是一种特殊形式的二叉搜索树,通过结点的颜色以及三条规则来保证二叉搜索树的平衡.规则1:根结点的颜色是黑色,规则2:叶子结点到根结点路径上遇到的黑色结点数目相同,规则3:叶子结点到根结点路径上无 ...
- 算法基础知识科普:8大搜索算法之红黑树(上)
平衡二叉树(AVL)是一种特殊的二叉搜索树(BST),即每个结点的值都大于其左子树且小于其右子树的值(若存在),并通过引入平衡因子的概念来保持树的平衡.平衡二叉树算法的重点是在插入.删除结点时,如何保 ...
- 美团实习面试:熟悉红黑树是吧?能不能写一下?
点击关注公众号,Java干货及时送达 手写红黑树确实有点过分了,但我觉得写不出来也正常,只要理解就行 红黑树是数据结构中比较复杂的一种,最近与它交集颇多,于是花了一周的空闲时间跟它死磕,终于弄明白并实 ...
- 美团实习面试:熟悉红黑树?能不能手写一下?
点击关注公众号,Java干货及时送达 来源:https://zhenbianshu.github.io 图片 手写红黑树确实有点过分了,但我觉得写不出来也正常,只要理解就行 红黑树是数据结构中比较复 ...
- 浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树......
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 上篇文章我们主要介绍了线性数据结构,本篇233酱带大家看看 无所不 ...
最新文章
- 异步化,高并发大杀器
- python中cgi到底是什么_python cgi是什么
- 算符优先文法,中缀式求值,栈的典型应用
- 如何使用:before和:after伪元素?
- opencv同时开启两个外接USB摄像头采集图像信息,并设置摄像头输出图像的分辨率
- Spring Cloud生态的构建
- MySQL利用磁盘缓存写入_MySQL写入缓冲区在数据库中的作用( Change Buffer )
- javaTemplates-学习笔记四
- MySQL 性能优化--QueryCache的原理
- JMETER HTTP 请求
- Python_016 XML解析
- 人件管理与中国古代史:程序员豫让
- 计算机专业术语(个人学习总结,不定期更新)
- freeswitch借助fail2ban屏蔽骚扰注册
- 训练faster rcnn报错:KeyError:‘max_overlaps’
- SQL SERVER数据库置疑后恢复步骤
- NGFW——安全策略的处理流程
- @Scheduled使用及讲解
- 【Jira数据自动化】Jira接口请求(一)
- [WP/ctfshow/XXE]ctfshow_XXE_web373-378
热门文章
- WinHex 19.9 (x86/x64)-SEO狼术
- google hacker语法
- 【Java基础】学习笔记
- 家庭网络视频文件共享服务器,【新手入门教程】 高清播放机与家庭网络文件共享设置详解|新手学堂...
- 动画效果(过渡,动画)
- United Plugins促销:Autoformer 智能动态处理插件 50% 折扣!
- 木马另类删除文件的方法
- 6-1 单链表逆转 (20分)两种实现方法。
- [No0000188][VCB-Studio 科普教程 2.5] 基于 PotPlayer 和 madVR 的播放器教程(已更新 XySubFilter)...
- Angular 中 web worker的使用