.entrySet()与keySet()的区别是什么？请使用markdown格式回答，包括一个标题，两个子标题分别讲解两个方法，并在每个子标题下分别给出代码示例。
user
```markdown
# entrySet() 与 keySet() 的区别

## entrySet()

`entrySet()` 方法返回的是一个包含映射中所有条目的 `Set` 集合。条目由 `Map.Entry` 类型的对象构成，每个对象都包含了映射的键和值。这意味着通过 `entrySet()` 可以直接操作键值对，对于需要同时访问键和值的操作来说非常方便。

### 代码示例

```java
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 1);
        map.put("B", 2);
        
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
            System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
        }
    }
}
```

输出：
```
Key: A, Value: 1
Key: B, Value: 2
```

## keySet()

`keySet()` 方法返回的是一个包含映射所有键的 `Set` 集合。使用 `keySet()` 可以很容易获取到集合中所有的键，但是要是访问这些键对应的值，需要通过 `get` 方法。

### 代码示例

```java
import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("A", 1);
        map.put("B", 2);
        
        for (String key : map.keySet()) {
            System.out.println("Key: " + key);
        }
    }
}
```

输出：
```
Key: A
Key: B
```
```
assistant