LinkedHashMap方法解析

2016-06-24 10:11 阅读 5,781 次 评论 0 条

一.摘要

分析源码的时候,钊林喜欢查看类之间的程序结构,LinkedHashMap继承HashMap,拥有HashMap继承的所有方法和属性,同时是Map的间接实现类,支持所有操作,保证操作是有序的。

LinkedHashMap的实体存放在双向链表,默认遍历的顺序,是键被插入的顺序,重新插入已存在的键不改变原有顺序。如果使用LinkedHashMap三个参数的构造方法,第三个参数accessOrder()被指定为true,迭代的顺序是实体被访问的顺序,putgetputAll操作影响访问的顺序,但在Collection的操作是不影响的。

LinkedHashMap的实现不是同步的,就像HashMap一样,可以参考《HashMap方法解析》。关于插入有序的实例化对象,删除、添加实体的操作被称为结构化的修改,通过putgetputAll访问有序的实例化对象也称为结构化的修改,因为上述方法改变了实体的顺序,相反实体值的改变不属于结构化的修改。

LinkedHashMap方法解析

LinkedHashMap只分析clone方法如何使用,其余方法可以参考《Map接口集合方法解析》。clone()实现Cloneable接口,具体操作如下:

  1. HashMap map = new HashMap();  
  2.         map.put("id"new Integer(123456789));  
  3.         map.put("blog_id"new Integer(6789));  
  4.         map.put("token_id"new Integer(12345));  
  5. HashMap map2=(HashMap) map.clone();  
  6.   
  7.         Set keySet = map.keySet();  
  8.         Iterator iter = keySet.iterator();  
  9.         while (iter.hasNext()) {  
  10.             String key = (String) iter.next();  
  11.             System.out.println(key + "=" + map.get(key));  
  12.         }  
  13.         System.out.println(map.equals(map2));  

你可能感兴趣的文章

来源:TeachCourse每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1862.html ,谢谢支持!

资源分享

Cannot run program “git.exe”: createprocess error=2,系统找不到指定的文件 Cannot run program "git.exe":
AsyncTask==Handler+Thread对比使用说明 AsyncTask==Handler+Thread对
性能优化实践一 性能优化实践一
IntentService,你了解的多少? IntentService,你了解的多少?