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

客服QQ:3315713922

JAVA程序员提高教程(11)-认识Map

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

标签: java课程标准21天学通javajava学习课程

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

  Map可以为某些数据提供快速查找功能,通过关键字(key)可以快速的得到对应的 Value,而不用像List那样需要大范围的遍历或特别的算法。

JAVA程序员提高教程(11)-认识Map_java课程标准_21天学通java_课课家

  1. 源代码

  1.import java.util.ArrayList;

  2.import java.util.HashMap;

  3.import java.util.HashSet;

  4.import java.util.Iterator;

  5.import java.util.List;

  6.import java.util.Map;

  7.import java.util.Set;

  8.import java.util.Map.Entry;

  9.

  10./**

  12. * 将键映射到值的对象。

  13. * 一个映射不能包含重复的键;每个键最多只能映射到一个值。

  14. *

  16. *

  18. */19.public class Lession {

  20. public static void main(String[] args) {

  21. // 构造一个Map

  22. // 我们使用HashMap进行测试

  23. Map map = new HashMap();

  24.

  25. // 查看map是否为空26. System.out.println(map.iSEMpty()); // true

  27.

  28. // 存入数据

  29. // put方法会返回原来的值

  30. // 如果是第一次赋值,则返回null;

  31. System.out.println(map.put("id", "123")); // null

  32. map.put("name", "xyz");

  33.

  34. // 再次查看map是否为空

  35. System.out.println(map.isEmpty()); // false

  36.

  37. // 查看有多少数据了

  38. System.out.println("size=" + map.size()); // size=2

  39.

  40. // 查看所有的数据

  41. showMap(map); // id=>123; name=>xyz;

  42.

  43. // 获取数据

  44. System.out.println("name=" + map.get("name")); // name=xyz

  45.

  46. // 放入不同key类型的数据

  47. map.put(new Integer(1), new Object());

  48. // 放入集合类型

  49. Set set = new HashSet();

  50. set.add(111);

  51. set.add(222);

  52. List list = new ArrayList();

  53. list.add(333);

  54. list.add(444);

  55. map.put(set, list);

  56. // 甚至放入Map类型

  57. Map m = new HashMap();

  58. m.put("mm", "mmmm");

  59. map.put(m, "map in map");

  60.

  61. // id=>123; 1=>java.lang.Object@de6ced; {mm=mmmm}=>map in map; name=>xyz;

  62. // [222, 111]=>[333, 444];

  63. showMap(map);

  64.

  65. // 我们尝试放入重复key的数据

  66. System.out.println(map.put("id", "456")); // 123

  67.

  68. // 可以看到,原来的数据value被覆盖了

  69. // id=>456; 1=>java.lang.Object@de6ced; {mm=mmmm}=>map in map; name=>xyz;

  70. // [222, 111]=>[333, 444];

  71. showMap(map);

  72.

  73. // 检查是否存在我们需要的数据

  74. // 查找key值

  75. System.out.println(map.containsKey("name")); // true

  76. // 查找Value

  77. System.out.println(map.containsValue(list)); // true

  78.

  79. // 删除一些数据

  80. // 是根据key进行删除的

  81. System.out.println(map.remove(m)); // map in map

  82. showMap(map); // id=>456; 1=>java.lang.Object@de6ced; name=>xyz; [222,

  83. // 111]=>[333, 444];

  84.

  85. // Entry的集合

  86. // 内部就是Map实现的,所以对其操作是互相影响的

  87. // 不支持add操作,

  88. Set ms = map.entrySet();

  89.

  90. // [id=456, 1=java.lang.Object@de6ced, name=xyz, [222, 111]=[333, 444]]

  91. System.out.println(ms);

  92. System.out.println(ms.size() + "/" + map.size()); // 4/4

  93.

  94. // 尝试通过entrySet删除

  95. Iterator it = ms.iterator();

  96. if (it.hasNext()) {

  97. Entry e = it.next();

  98. System.out.println(e.getKey() + "=" + e.getValue()); // id=456

  99. it.remove();

  100. }

  101. System.out.println(ms.size() + "/" + map.size()); // 3/3

  102.

  103. // 清除所有数据

  104. map.clear();

  105. System.out.println(ms.size() + "/" + map.size()); // 0/0

  106. }

  107.

  108. public static void showMap(Map map) {

  109. // 迭代Key的操作

  110. Iterator it = map.keySet().iterator();

  111. Object key;

  112. while (it.hasNext()) {

  113. key = it.next();

  114. System.out.print(key + "=>" + map.get(key) + "; ");

  115. }

  116. System.out.println();

  117. }

  118.}

  119.

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