二,Map集合(实际是一个接口)
Map 集合介绍
在 Java 中,Map
是一种存储键值对的集合,它允许你通过键快速查找对应的值。Map
接口有两个主要的实现类:HashMap
和 TreeMap
。这些类提供了不同的性能特点和排序特性。
Map 集合的特点
- 键的唯一性:在同一个
Map
集合中,键是唯一的。 - 值的重复性:在同一个
Map
集合中,值可以发生重复。 - 键值对:一对键值表示
Map
集合中的一个元素。
方法详解
V put(K key, V value)
:向Map
中添加或更新键值对。V remove(Object key)
:根据键从Map
中移除键值对,并返回被移除的值。void clear()
:清空Map
中的所有键值对。boolean containsKey(Object key)
:检查Map
是否包含指定的键。boolean containsValue(Object value)
:检查Map
是否包含指定的值。boolean isEmpty()
:检查Map
是否为空。int size()
:获取Map
中键值对的数量。V get(Object key)
:根据键从Map
中获取值。Set<K> keySet()
:获取Map
中所有键的集合。Collection<V> values()
:获取Map
中所有值的集合。Set<Map.Entry<K,V>> entrySet()
:获取Map
中所有键值对的集合。
Map 集合中键的唯一性
在 Map
集合中,键的唯一性是通过键的 hashCode()
方法和 equals()
方法来保证的。如果两个键的哈希值相同,并且 equals()
方法返回 true
,则这两个键被认为是相同的,Map
将不会添加重复的键。
若想要使用 Map
集合存储自定义对象作为键,需要元素类型本身重写 hashCode
方法和 equals
方法。
Map 集合的实现类
HashMap 类
- 底层数据结构:哈希表
- 特点:查找速度快,键唯一,值可以重复,线程不安全,效率高。
- 使用场景:适用于需要快速查找的场景。
TreeMap 类
- 底层数据结构:红黑树(自平衡二叉树)
- 特点:键值对有序,键唯一,值可以重复,线程不安全,效率相对较低。
- 使用场景:适用于需要有序集合的场景。
示例代码
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
// 向 Map 中添加元素
map.put("Alice", 25);
map.put("Bob", 30);
map.put("Charlie", 35);
// 根据键获取值
Integer age = map.get("Bob");
System.out.println("Bob's age: " + age);
// 检查 Map 是否包含某个键
boolean containsKey = map.containsKey("Alice");
System.out.println("Contains Alice: " + containsKey);
// 检查 Map 是否包含某个值
boolean containsValue = map.containsValue(30);
System.out.println("Contains age 30: " + containsValue);
// 移除元素
map.remove("Charlie");
// 清空 Map
map.clear();
// 检查 Map 是否为空
boolean isEmpty = map.isEmpty();
System.out.println("Is map empty: " + isEmpty);
// 获取 Map 的大小
int size = map.size();
System.out.println("Map size: " + size);
}
}
总结
Map
接口及其实现类提供了键值对的存储和管理功能。HashMap
适合于需要快速查找的场景,而 TreeMap
适合于需要有序集合的场景。通过理解 Map
接口及其实现类的特点和使用方法,可以更有效地进行数据存储和管理。