手机
当前位置:查字典教程网 >编程开发 >Java >java HashMap,TreeMap与LinkedHashMap的详解
java HashMap,TreeMap与LinkedHashMap的详解
摘要:javaHashMap,TreeMap与LinkedHashMap的详解今天上午面试的时候问到了Java,Map相关的事情,我记错了Hash...

java HashMap,TreeMap与LinkedHashMap的详解

今天上午面试的时候 问到了Java,Map相关的事情,我记错了HashMap和TreeMap相关的内容,回来赶紧尝试了几个demo理解下

package Map; import java.util.*; public class HashMaps { public static void main(String[] args) { Map map = new HashMap(); map.put("a", "aaa"); map.put("b", "bbb"); map.put("c", "ccc"); map.put("d", "ddd"); Iterator iterator = map.keySet().iterator(); while (iterator.hasNext()) { Object key = iterator.next(); System.out.println("map.get(key) is :" + map.get(key)); } Hashtable tab = new Hashtable(); tab.put("a", "aaa"); tab.put("b", "bbb"); tab.put("c", "ccc"); tab.put("d", "ddd"); Iterator iterator_1 = tab.keySet().iterator(); while (iterator_1.hasNext()) { Object key = iterator_1.next(); System.out.println("tab.get(key) is :" + tab.get(key)); } TreeMap tmp = new TreeMap(); tmp.put("a", "aaa"); tmp.put("b", "bbb"); tmp.put("c", "ccc"); tmp.put("d", "ddd"); tmp.put("a", "aba"); Iterator iterator_2 = tmp.keySet().iterator(); while (iterator_2.hasNext()) { Object key = iterator_2.next(); System.out.println("tmp.get(key) is :" + tmp.get(key)); } LinkedHashMap<String ,Integer> linkedHashMap = new LinkedHashMap<String,Integer>(); linkedHashMap.put("dasdsa", 1); linkedHashMap.put("gdsf",2); linkedHashMap.put("texvdfd", 3); linkedHashMap.put("bdada", 4); linkedHashMap.put("gdsf",3); for(String temp : linkedHashMap.keySet()){ System.out.println(temp); } } }

Map不同于 List, 底层使用 键值对的形式存储数据 Map.Entry是内部的一个子条目,Map的不同实现 对键值对的索引方案不同

HashMap本身是用hash函数对键值做索引 我们不能确定最后键值的顺序

但是存在一个有趣的现象 就是在以Integer作为键值对的时候,当位数为1位时 键值是按照从小到大排的,位数上升到两位的时候 就可能存在问题

TreeMap内部存在着一个平衡树来存储着键值索引,TreeMap 把键值按照比较函数排序,我推测内部是可能存在着一个AVLtree

LinkedHashMap 这个存在着一个特性是,键值对是按照插入顺序排序的,如果存在着重复插入,以首次插入的顺序来记,网上的一种说法是该结构内部存在着2重hash

一个解决顺序问题,一个解决存储问题,正确性待确认

HashMap和TreeMap 是最常用的两种Map结构, 一般来说HashMap的效率比较高,也最为常见,如果我们需要键值有序的话,我们才会用到TreeMap

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

【java HashMap,TreeMap与LinkedHashMap的详解】相关文章:

深入分析java文件路径的详解

java中 == 与 equal 的区别讲解

Java中关于int和Integer的区别详解

基于Java HashMap的死循环的启示详解

java string的一些细节剖析

java中String的常见用法总结

Java中Vector与ArrayList的区别详解

java this super使用方法详解

Java多线程的用法详解

Java中HashMap和TreeMap的区别深入理解

精品推荐
分类导航