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

    作者:课课家教育更新于: 2016-02-03 13:55:47

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

      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.

课课家教育

未登录