下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

JAVA程序员提高教程(14)-认识Map之LinkedHashMap

作者:课课家教育     来源: http://www.kokojia.com点击数:1041发布时间: 2016-02-03 13:59:55

标签: java Map集合21天学通javajava入门

大神带你学编程,欢迎选课

  Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序通常就是将键插入到映射中的顺序(插入顺序)。注意,如果在映射中重新插入 键,则插入顺序不受影响。(如果在调用 m.put(k, v) 前 m.containsKey(k) 返回了 true,则调用时会将键 k 重新插入到映射 m 中。)

JAVA程序员提高教程(14)-认识Map之LinkedHashMap_java Map集合_21天学通java_课课家

  此实现可以让客户避免未指定的、由 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./**

  10. *

  11. * 这个类继承自HashMap,拥有其全部特性.

  12. * 同时内部维护着一个所有条目的双重链接,具有可预知的迭代顺序。

  13. * 默认按照插入的顺序进行显示.

  14. * 重复插入一个Key的数据,不会影响到使用的先后顺序。

  15. * 此类避免了HashMap的杂乱无章的使用顺序,同时又避免了TreeMap的额外成本.

  16. *

  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;

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程