# Map

## Map的创建

HashMap 和 TreeMap的创建

```java
Map<String, String> map1 = new HashMap<>();
Map<String, String> map2 = new TreeMap<>();
```

## Map的遍历

通过entrySet()方法获得 键值对

```java
// 打印输出Map的key和value,通过entrySet方法
// entrySet返回值是Set<Entry<key类型, value类型>>
System.out.println("通过entrySet得到key-value :");
Set<Entry<String, String>> entrySet = map1.entrySet();
for (Entry<String, String> entry : entrySet) {
    System.out.print(entry.getKey() + " - ");
    System.out.println(entry.getValue());
}
```

通过 keySet() 方法获得 key 的集合, 再通过key 去访问 value

```java
// 打印输出Map的key和value,通过keySet方法
System.out.println("通过keySet得到key-value :");
// 1.取得KeySet
Set<String> keySet = map1.keySet();
// 2.遍历keySet
for (String key : keySet) {
    System.out.println( key + " - " + map1.get(key));
}
```

使用迭代器遍历 Map 的 values  (嫌语法麻烦的可以不用这种方法hhh)

```java
// 打印输出Map的values, 使用迭代器
System.out.println("打印输出Map的values, 使用迭代器 ");
Iterator<String> it = map1.values().iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

```

使用增强型 for 循环遍历 Map 的 values

```java
System.out.println("打印输出Map的values, 使用迭代器 ");
for (String s: map1.values()) {
    System.out.println(s);
}
```

TreeMap 也支持以上的所有方法, 区别是 TreeSet 会对所有 key 的顺序 进行动态维护
