Java Map类
欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Java
目录
- 👉🏻map
- 1. 常见的实现
- 2. 主要方法
- 2.1. `put(K key, V value)`
- 2.2. `get(Object key)`
- 2.3. `remove(Object key)`
- 2.4. `containsKey(Object key)`
- 2.5. `containsValue(Object value)`
- 2.6. `keySet()`
- 2.7. `values()`
- 2.8. `entrySet()`
- 3. 示例代码
- 👉🏻访问
- 1. 访问键
- 2. 访问值
- 3.访问键值
- 👉🏻hashCode() 和 equals() 方法
👉🏻map
Map
是 Java 中的一种数据结构,用于存储键值对。它的主要特点是每个键唯一,每个键对应一个值。
每个 Map 中的元素由键(key)和值(value)组成,键是唯一的,而值可以重复。
以下是一些常见的 Map
实现和基本方法:
1. 常见的实现
- HashMap:基于哈希表实现,允许 null 键和 null 值,查询速度快。
- LinkedHashMap:保留插入顺序,查询速度稍慢于
HashMap
。 - TreeMap:基于红黑树实现,按键的自然顺序或指定的比较器排序。
2. 主要方法
2.1. put(K key, V value)
- 描述:将指定值与指定键关联。
2.2. get(Object key)
- 描述:根据键获取对应的值。
2.3. remove(Object key)
- 描述:移除指定键及其对应的值。
2.4. containsKey(Object key)
- 描述:检查是否存在指定键。
2.5. containsValue(Object value)
- 描述:检查是否存在指定值。
2.6. keySet()
- 描述:返回所有键的集合。
2.7. values()
- 描述:返回所有值的集合。
2.8. entrySet()
- 描述:返回所有键值对的集合。
3. 示例代码
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> ageMap = new HashMap<>();
// 添加键值对
ageMap.put("Alice", 30);
ageMap.put("Bob", 25);
// 获取值
System.out.println("Alice's age: " + ageMap.get("Alice")); // 输出: 30
// 移除键值对
ageMap.remove("Bob");
// 检查键是否存在
System.out.println("Contains Bob: " + ageMap.containsKey("Bob")); // 输出: false
// 打印所有键值对
for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
👉🏻访问
如果只需要访问 Map
中的键或值,可以使用 keySet()
或 values()
方法:
1. 访问键
使用 keySet()
方法获取所有键的集合,然后可以遍历这个集合。
import java.util.HashMap;
import java.util.Map;
public class AccessKeysExample {
public static void main(String[] args) {
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Alice", 30);
ageMap.put("Bob", 25);
// 遍历键
for (String key : ageMap.keySet()) {
System.out.println("Key: " + key);
}
}
}
2. 访问值
使用 values()
方法获取所有值的集合,然后可以遍历这个集合。
import java.util.HashMap;
import java.util.Map;
public class AccessValuesExample {
public static void main(String[] args) {
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Alice", 30);
ageMap.put("Bob", 25);
// 遍历值
for (Integer value : ageMap.values()) {
System.out.println("Value: " + value);
}
}
}
3.访问键值
如果你需要同时访问 Map
中的键和值,可以使用 entrySet()
方法。这个方法返回一个包含所有键值对的集合,你可以通过 Map.Entry
来访问每个键及其对应的值。
import java.util.HashMap;
import java.util.Map;
public class AccessKeysAndValuesExample {
public static void main(String[] args) {
Map<String, Integer> ageMap = new HashMap<>();
ageMap.put("Alice", 30);
ageMap.put("Bob", 25);
// 遍历键值对
for (Map.Entry<String, Integer> entry : ageMap.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}
}
}
entrySet()
返回一个包含所有Map.Entry
对象的集合。- 每个
Map.Entry
对象都有getKey()
和getValue()
方法,可以分别获取键和值。
👉🏻hashCode() 和 equals() 方法
hashCode()
和 equals()
方法在 Java 中用于对象的相等性判断和哈希表中的存储。
equals()
- 用于比较两个对象是否相等。默认实现比较对象的引用,但通常需要重写以比较对象的内容。
hashCode()
- 返回对象的哈希码,用于在哈希表(如
HashMap
)中快速查找对象。相等的对象必须具有相同的哈希码。
意义
-
在集合类中,
hashCode()
用于确定对象存储的位置,而equals()
用于在同一位置中查找是否存在相等的对象。重写这两个方法时,必须确保: -
如果
equals()
返回true
,则hashCode()
也必须相等。
如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长