HashMap遍历有序性问题——map.entrySet()的无序性
在LeetCode
刷题的时候,在一道返回 字符串中最早出现的只出现一次的字符下标的题目中,使用大HashMap
的遍历方式,我选择了使用map.entrySet()
获取节点集合的方式进行遍历。
题目和代码如下:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,
并返回它的位置, 如果没有则返回 -1(需要区分大小写)
本来以为越早插入的数据遍历的时候会越早遍历到,按照条件要求,只要找到第一个 value
值不等于-1
的数据,就可以返回,然而事实并非如此,在下面这个测试用例中,有两个只出现一次的字符,也就是 l
和 e
,按理说应该先遍历到l
,但是偏偏返回e
的下标:
看了Map.Entry<Key,Value>
的源代码和HashMap
的源代码,也没有看出个所以然,于是修改了一下代码,加了一个最小下标的判断条件,终于找出了最早出现的无重复出现的字符下标:
总结:
在使用map.entrySet()
对HashMap
进行遍历的时候,不能确保遍历的有序性,在强烈依赖遍历的有序性的情况下,尽量避免使用map.entrySet()
。
HashMap遍历有序性问题——map.entrySet()的无序性相关推荐
- HashMap中的遍历有序性探究
首先HashMap中的keySet是有序的. 输入代码: @Testpublic void testMapSort(){Map<Integer, Integer> map = new Ha ...
- java for遍历hashmap_Java中HashMap遍历几种方式
目录 一.使用迭代器 二.for each 遍历 一.使用迭代器 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterat ...
- Java基础 HashMap的添加 修改 遍历 Map.Entry Map.entrySet()的使用及实例
Java Map Map中不能包含相同的键,每个键只能映射一个值. HashMap:并不能保证它的元素的顺序,元素加入散列映射的顺序并不一定是它们被迭代方法读出的顺序. Map.Entry Map.E ...
- HashMap有序性与无序性阐述
1.插入无序 public class HashMapTest {public static void main(String[] args) {HashMap<String, String&g ...
- HashMap遍历的两种方式,推荐使用entrySet()
转自:HashMap遍历的两种方式,推荐使用entrySet() 第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterat ...
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
源网址: http://blog.csdn.net/mageshuai/article/details/3523116 今天看Think in java 的GUI这一章的时候,里面的TextArea这 ...
- HashMap遍历的三种方式,entrySet()和keySet() 还有Java8的foreach
第一种: Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { ...
- java map遍历顺序_深入理解HashMap遍历元素的顺序
HashMap遍历元素的顺序. 一,HashMap元素的底层存储顺序 我们都知道HashMap是"无序"的,也就是说不能保证插入顺序.但是,HashMap其实也是有序的,一组相同的 ...
- HashMap遍历和使用
map的几种遍历方式: Map< String, String> map = new HashMap<>(); map.put("aa", "@s ...
最新文章
- php通过浏览器下载json文件遇到的问题
- CSharpGL(42)借助帧缓存实现渲染到纹理(RenderToTexture)
- java面试题001
- 30分钟全面解析-SQL事务+隔离级别+阻塞+死锁
- python创建线程
- 主流大数据平台及解决方案对比
- Adobe After Effects CS6 操作记录
- python语法_算数运算+赋值运算符+比较运算符+逻辑运算符
- Android访问数据库(SQL Server 和 MySQL)
- pandas之Dataframe 菜鸟教程
- KGB知识图谱凭借OCR文字识别突破文档解析局限
- 韩咏梅:幸福只需要七分饱(转自新加坡联合早报)
- 地推项目大全_地推吧:app线上推广渠道大全(软件app上新地推)
- AutoGPT是什么?超简单安装使用教程
- ARM M3小计(一)1~3章。
- Android SDK 开发流程
- mysql面试学生表_SQL笔试:Student学生表,Course 课程表,Sc选课表
- android 关联mp3,手把手教你Android如何使用NDK实现一个MP3转码库
- SQL Server R2 报表服务,BIDS中预览带参数的报表,整个BIDS突然关闭
- Eclipse修改颜色主题
热门文章
- Python基础【day03】:字典(一)
- activemq spring监听不了
- JS与Jquery学习笔记(一)
- win7+vs2008+windows mobile6.5.3
- NetBeans+xdebug解决无法连接xdebug问题
- mysql怎么从1开始递增
- ARC学习笔记(一)
- Interesting Finds: 2008.04.24
- 【重识 HTML + CSS】官方文档的阅读
- PyQt5: This application failed to start because it could not find or load the Qt platform plugin