1 Map

  • 框架图
    Map.png
  • Map存放的是一个键值对(key-value)
  • 当key相同时,value会被替换
  • 通过key可以找到Value

1.1 Map常用方法

  1. //演示map接口常用方法
  2. Map map = new HashMap();
  3. map.put("Curry",null);//OK
  4. map.put("Curry", "MVP");//替换
  5. map.put("Stephen", "MVP");//OK
  6. map.put("James", null);//OK
  7. map.put(null, "James");//OK
  8. System.out.println("map=" + map);
  9. // remove:根据键删除映射关系
  10. map.remove(null);
  11. System.out.println("map=" + map);
  12. // get:根据键获取值
  13. Object val = map.get("Curry");
  14. System.out.println("val=" + val);
  15. // size:获取元素个数
  16. System.out.println("k-v=" + map.size());
  17. // isEmpty:判断个数是否为0
  18. System.out.println(map.isEmpty());//F
  19. // clear:清除k-v
  20. //map.clear();
  21. System.out.println("map=" + map);
  22. // containsKey:查找键是否存在
  23. System.out.println("结果=" + map.containsKey("Curry"));//T

1.2 遍历Map

  1. 可以直接通过Map得到Key,然后通过Key得到Value来遍历
  2. 通过entryset来遍历
  1. public static void main(String[] args) {
  2. Map map = new HashMap();
  3. map.put("Curry", "MVP");
  4. map.put("Stephen", "MVP");
  5. map.put("James", null);
  6. map.put(null, "James");
  7. //第一组: 先取出 所有的Key , 通过Key 取出对应的Value
  8. Set keyset = map.keySet();
  9. //(1) 增强for
  10. System.out.println("-----第一种方式-------");
  11. for (Object key : keyset) {
  12. System.out.println(key + "-" + map.get(key));
  13. }
  14. //(2) 迭代器
  15. System.out.println("----第二种方式--------");
  16. Iterator iterator = keyset.iterator();
  17. while (iterator.hasNext()) {
  18. Object key = iterator.next();
  19. System.out.println(key + "-" + map.get(key));
  20. }
  21. //第二组: 把所有的values取出
  22. Collection values = map.values();
  23. //这里可以使用所有的Collections使用的遍历方法
  24. //(1) 增强for
  25. System.out.println("---取出所有的value 增强for----");
  26. for (Object value : values) {
  27. System.out.println(value);
  28. }
  29. //(2) 迭代器
  30. System.out.println("---取出所有的value 迭代器----");
  31. Iterator iterator2 = values.iterator();
  32. while (iterator2.hasNext()) {
  33. Object value = iterator2.next();
  34. System.out.println(value);
  35. }
  36. //第三组: 通过EntrySet 来获取 k-v
  37. Set entrySet = map.entrySet();// EntrySet<Map.Entry<K,V>>
  38. //(1) 增强for
  39. System.out.println("----使用EntrySet 的 for增强(第3种)----");
  40. for (Object entry : entrySet) {
  41. //将entry 转成 Map.Entry
  42. Map.Entry m = (Map.Entry) entry;
  43. System.out.println(m.getKey() + "-" + m.getValue());
  44. }
  45. //(2) 迭代器
  46. System.out.println("----使用EntrySet 的 迭代器(第4种)----");
  47. Iterator iterator3 = entrySet.iterator();
  48. while (iterator3.hasNext()) {
  49. Object entry = iterator3.next();
  50. //System.out.println(next.getClass());//HashMap$Node -实现-> Map.Entry (getKey,getValue)
  51. //向下转型 Map.Entry
  52. Map.Entry m = (Map.Entry) entry;
  53. System.out.println(m.getKey() + "-" + m.getValue());
  54. }
  55. }

2 HashMap

  • HashMap是线程不安全的

3 Hashtable

  • Key和Value都不能为空
  • 是线程安全的

4 Properties

  • 通常用于读取文件