JAVA提高教程(14)-认识Map之LinkedHashMap - 编程入门网
JAVA提高教程(14)-认识Map之LinkedHashMap时间:2011-06-13 csdn博客 老紫竹Java基础及提高教程目录 Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。) 此实现可以让客户避免未指定的、由 HashMap(及 Hashtable)所提供的通常为杂乱无章的排序工作,同时无需增加与 TreeMap 相关的成本。使用它可以生成一个与原来顺序相同的映射副本,而与原映射的实现无关: 1.package collection; 2. 3.import java.util.HashMap; 4.import java.util.Iterator; 5.import java.util.LinkedHashMap; 6.import java.util.Map; 7. 8./** 9. * 老紫竹JAVA提高教程(14)-认识Map之LinkedHashMap。 10. * 11. * 这个类继承自HashMap,拥有其全部特性. 12. * 同时内部维护着一个所有条目的双重链接,具有可预知的迭代顺序。 13. * 默认按照插入的顺序进行显示. 14. * 重复插入一个Key的数据,不会影响到使用的先后顺序。 15. * 此类避免了HashMap的杂乱无章的使用顺序,同时又避免了TreeMap的额外成本. 16. * 17. * @author 老紫竹 JAVA世纪网(java2000.net) 18. * 19. */ 20.public class Lession14LinkedHashMap { 21. public static void main(String[] args) { 22. // 分别使用2个类,进行相同的数据测试 23. // 可以看到,HashMap的顺序是不可预测的 24. // 而LinkedHashMap的顺序严格按照插入顺序 25. 26. // 102=>102; 100=>100; 101=>101; 98=>98; 99=>99; 27. testMap(new HashMap()); 28. // 98=>98; 99=>99; 100=>100; 101=>101; 102=>102; 29. testMap(new LinkedHashMap()); 30. 31. // 删除数据后,LinkedHashMap会将数据放到末尾最后的位置 32. // 而HashMap可能会使用前一个空缺的位置 33. } 34. 35. public static void testMap(Map map) { 36. for (int i = 98; i <= 102; i++) { 37. map.put(i, i); 38. } 39. showMap(map); 40. // 尝试重复插入数据 41. map.put(100, 100); 42. showMap(map); 43. 44. // 删除数据,并再次插入 45. map.remove(100); 46. map.put(100, 100); 47. showMap(map); 48. } 49. 50. public static void showMap(Map map) { 51. // 迭代Key的操作 52. Iterator it = map.keySet().iterator(); 53. Object key; 54. while (it.hasNext()) { 55. key = it.next(); 56. System.out.print(key + "=>" + map.get(key) + "; "); 57. } 58. System.out.println(); 59. } 60.} 运行效果: 102=>102; 100=>100; 101=>101; 98=>98; 99=>99; 102=>102; 100=>100; 101=>101; 98=>98; 99=>99; 102=>102; 100=>100; 101=>101; 98=>98; 99=>99; 98=>98; 99=>99; 100=>100; 101=>101; 102=>102; 98=>98; 99=>99; 100=>100; 101=>101; 102=>102; 98=>98; 99=>99; 101=>101; 102=>102; 100=>100; |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |