Java HashMap如何实现自动排序功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1227个文字,预计阅读时间需要5分钟。
HashMap概述HashMap是无序的,这里的无序指的是你取出数据和存入数据的顺序可能不同。
发现问题当尝试向HashMap中存储int类型的key时,可以发现输出的顺序会自动排序。
HashMap
1.HashMap概述
HashMap是无序的,这里无序的意思是你取出数据的顺序与你存入数据的顺序不同
2.发现问题
当尝试向HashMap中存入int类型的key,可以看到在输出的时候会自动排序
HashMap<Integer, String> map = new HashMap<>(); map.put(3, "asdf"); map.put(2, "asdf"); map.put(1, "asdf"); map.put(6, "asdf"); map.put(5, "asdf"); map.put(4, "asdf"); map.put(8, "asdf"); map.put(9, "asdf"); map.put(7, "asdf"); map.put(0, "asdf");
输出
3.实现原理
我们都知道,HashMap是数组加链表实现的,在链表长度大于8的时候将链表转化为红黑树
数组加链表画一下模型图是这样的,黑色的是数组,橙色的是链表,遍历HashMap的key的时候,先遍历第一列,然后第二列。。。
本文共计1227个文字,预计阅读时间需要5分钟。
HashMap概述HashMap是无序的,这里的无序指的是你取出数据和存入数据的顺序可能不同。
发现问题当尝试向HashMap中存储int类型的key时,可以发现输出的顺序会自动排序。
HashMap
1.HashMap概述
HashMap是无序的,这里无序的意思是你取出数据的顺序与你存入数据的顺序不同
2.发现问题
当尝试向HashMap中存入int类型的key,可以看到在输出的时候会自动排序
HashMap<Integer, String> map = new HashMap<>(); map.put(3, "asdf"); map.put(2, "asdf"); map.put(1, "asdf"); map.put(6, "asdf"); map.put(5, "asdf"); map.put(4, "asdf"); map.put(8, "asdf"); map.put(9, "asdf"); map.put(7, "asdf"); map.put(0, "asdf");
输出
3.实现原理
我们都知道,HashMap是数组加链表实现的,在链表长度大于8的时候将链表转化为红黑树
数组加链表画一下模型图是这样的,黑色的是数组,橙色的是链表,遍历HashMap的key的时候,先遍历第一列,然后第二列。。。

