小结

1.Map是一种映射表,可以通过key快速查找value。
2.可以通过for each遍历keySet(),也可以通过for each遍历entrySet(),直接获取key-value。
3.最常用的一种Map实现是HashMap。
4.Map用于存储key-value的映射,对于充当key的对象,是不能重复的,并且,不但需要正确覆写equals()方法,还要正确覆写hashCode()方法。

Map和List不同的是,Map存储的是key-value的映射关系,并且,它不保证顺序
假设我们放入”A”,”B”,”C”这3个key,遍历的时候,每个key会保证被遍历一次且仅遍历一次,但顺序完全没有保证。

重复放入key-value并不会有任何问题,但是一个key只能关联一个value

  1. public class Main {
  2. public static void main(String[] args) {
  3. Map<String, Integer> map = new HashMap<>();
  4. map.put("apple", 123);
  5. map.put("pear", 456);
  6. System.out.println(map.get("apple")); // 123
  7. System.out.println(map.put("apple", 789)); //123 放入已经有的key会返回已经
  8. 被覆盖掉的value ,否则返回null
  9. // map.put("apple", 789); // 再次放入apple作为key,但value变为789
  10. System.out.println(map.get("apple")); // 789
  11. }
  12. }

2.遍历Map

  1. public class Main {
  2. public static void main(String[] args) {
  3. Map<String, Integer> map = new HashMap<>();
  4. map.put("apple", 123);
  5. map.put("pear", 456);
  6. map.put("banana", 789);
  7. for (String key : map.keySet()) {
  8. Integer value = map.get(key);
  9. System.out.println(key + " = " + value);
  10. }
  11. }
  12. }
  13. banana = 789
  14. apple = 123
  15. pear = 456
  1. public class Main {
  2. public static void main(String[] args) {
  3. Map<String, Integer> map = new HashMap<>();
  4. map.put("apple", 123);
  5. map.put("pear", 456);
  6. map.put("banana", 789);
  7. for (Map.Entry<String, Integer> entry : map.entrySet()) {
  8. String key = entry.getKey();
  9. Integer value = entry.getValue();
  10. System.out.println(key + " = " + value);
  11. }
  12. }
  13. }
  14. banana = 789
  15. apple = 123
  16. pear = 456