map通过key排序,map集合如何根据key进行排序
java map的key排序吗
Java为数据结构中的映射定义了一个接口java.util.Map。它实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMap。Map不允许键重复,但允许值重复。
1.HashMap:
最常用的Map是根据一个键的hashcode值来存储数据,根据键可以直接得到它的值(因为同一个键hashcode值相同,所以可以根据hashcode值所在地址存储的键直接得到值)。它的访问速度很快,遍历时,获取数据的顺序是完全随机的。HashMap最多只允许一条记录的键为null。多条记录的值允许为空。HashMap不支持线程同步,即多个线程可以随时写HashMap,导致数据不一致。如果需要同步,可以使用Synchronize HashMap的方法,使HashMap具有同步的能力,或者使用concurrentHashMap。
2.HashTable:
和HashMap类似,不同的是不允许记录的键或值为空,支持线程同步,即任何时刻只有一个线程可以写HashTable,这也导致HashTable写的比较慢!
3.LinkedHashMap:
是HahsMap的子类,但它保持了记录的插入顺序。遍历时先得到的肯定是先插入的。你也可以在构造的时候取参数,按照应用的数量来排序。然而,有一个例外。当HashMap容量很大,实际数据很少时,遍历会比LinkedHashMap慢(因为是链),因为HashMap的遍历速度与其容量有关。
4.TreeMap:
实现了sortMap接口,可以对保存的记录按键排序(默认为升序),或者指定一个排序比较器,遍历时得到的数据是乱序的。
什么情况用什么类型的Map:
插入、删除和定位元素:Map中的hashMap
以自定义顺序或自然顺序遍历:TreeMap
要求输入顺序和输出顺序相同:LinkedHashMap
我们,大量免费的Java入门教程,欢迎在线学习!以上是java map的键排序细节吗?更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。