之前学HashMap的知识,开发中居然用到了。

之前学HashMap的知识,开发中居然用到了。

  • 在学习HashMap底层实现时,知道底层的数据结构是数组+链表实现(JDK1.8改为数组+链表+红黑树)。每次在进行元素的put时,都会根据key的hashcode值经过hash算法,得到存储在数据中某个位置。
  • 今天项目中有个接口的需求是排序map,我用首先将map转换为EntrySet,然后通过Comparator接口对map进行value值的降序排序。奇怪的事情发生了,排好序后,将数据传给前台,数据并非有序。我迷惑了,于是打断点调试,确实发现是按照value值排好了序,那么问题出在哪呢?
  • 左看右看,我突然想到,我将排好序的Set分别取key和value赋值给了一个HashMap,等等!HashMap?
  • 我知道了。Map是无序的!要想让结果按照添加的顺序获取,可以使用LinkedHashMap!于是问题得到了解决。

总结:根据map中的value排序,排好后想要顺序按照顺序排列,那么可以使用LinkedHashMap来放数据,取出的结果就能够按照放入的顺去获取!

猜你喜欢

转载自blog.csdn.net/qq_41570752/article/details/109384355