一切福田,不離方寸,從心而覓,感無不通。

Java中Map接口存取的有序和无序

Java中的map有4个常用的实现类,分别是

HashMap
TreeMap
LinkedHashMap
ConcurrentHashMap
另外的HashTable作为Map的一个同步实现类,因为效率不高而且有ConcurrentHashMap作为更高效的同步Map实现,所以几乎很少使用。

所谓的有序无序和排序无关,而是指数据存入和取出的顺序是否一样,无序就是存入的顺序和取出的顺序不一样,反之就是有序。

4个实现类中,HashMap和ConcurrentHashMap是无序的,LinkedHashMap是有序的,而TreeMap会根据键进行升序排序。通过一段程序来看一下这几个类的有序和无序

结果输出

可以看出HashMap和ConcurrenthashMap键的顺序和keys数组的顺序不一样,也就是插入和读取的顺序不一样;LinkedHashMap是一致的;TreeMap则对键进行了自然排序。

对于Set集合,两个常用的实现类HashSet和TreeSet底层分别使用的HashMap和TreeMap,所以Set的有序和无序就和对应使用的Map一样了。
————————————————
版权声明:本文为CSDN博主「牛同学2333」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44416026/article/details/105051764