Java HashMap如何实现基于键值对的自定义排序功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1231个文字,预计阅读时间需要5分钟。
HashMap概述:HashMap是无序的,这里的无序意味着你取出数据的顺序可能与存入数据的顺序不同。
发现问题:当尝试向HashMap中存入int类型的key时,会发现输出时会自动排序,称为HashMapInt。
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的时候,先遍历第一列,然后第二列。。。
本文共计1231个文字,预计阅读时间需要5分钟。
HashMap概述:HashMap是无序的,这里的无序意味着你取出数据的顺序可能与存入数据的顺序不同。
发现问题:当尝试向HashMap中存入int类型的key时,会发现输出时会自动排序,称为HashMapInt。
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的时候,先遍历第一列,然后第二列。。。

