Map 接口
Map 接口的定义
Map 接口是与 Collection 完全独立的另外一个体系,它们之间还有一个区别就是 Set、List、Collection 只能操作单个元素,而 Map 可以操作一对元素,因为 Map 中的元素都是以 key-value 的键值映射形式存储的。Map 接口定义时使用了泛型,并且定义了两个泛型 K 和 V,K 表示 key,规定了键元素的数据类型,V 表示 value,规定了值元素的数据类型,Map 接口中的方法如表:
方法 | 描述 |
---|---|
boolean size() | 获取集合长度 |
boolean isEmpty() | 判断集合是否为空 |
boolean containsKey(Object key) | 判断集合中是否存在某个 key 值 |
boolean containsValue(Object value) | 判断集合中是否存在某个 value 值 |
V get(Object key) | 取出集合中 key 对应的 value 值 |
V put(K key, V value) | 向集合中存入一组 key-value 的元素 |
V remove(Object key) | 删除集合中 key 对应的 value 值 |
void putAll(Map<? extends K,? extends V> m) | 向集合中添加另外一个 Map 集合 |
void clear() | 清除集合中的所有元素 |
Set keySet() | 取出集合中所有的 key,返回一个 set 集合 |
Collection values() | 取出集合中所有的 value,返回一个 Collection 集合 |
Set<Map.Entry<K,V>> entrySet() | 将 Map 对象转换为 Set 对象 |
int hashCode() | 获取集合的散列值 |
boolean equals(Object o) | 比较两个集合是否相等 |
Map 接口的实现类
Map 是一个接口,在实际开发中需要使用 Map 必须通过其实现类来完成实例化操作,Map 接口常用的实现类如下:
- HashMap:存储一组无序,key 不可重复,但 value 可重复的元素。
- Hashtable:存储一组无序,key 不可重复,但 value 可重复的元素。
- TreeMap:存储一组有序,key 不可重复,但 value 可重复的元素,可以按照 key 来排序。
HashMap
HashMap 是 Map 接口的一个常用实现类,操作也非常简单,让我们一起实践:
public class TestHashMap {
public static void main(String[] args) {
HashMap<String,String> hashMap = new HashMap<String,String>();
hashMap.put("h", "Hello");
hashMap.put("w","World");
hashMap.put("j","Java");
hashMap.put("s","JavaSE");
hashMap.put("m","JavaME");
hashMap.put("e","JavaEE");
System.out.println(hashMap);
hashMap.remove("e");
System.out.println("删除之后:"+hashMap);
hashMap.put("m","Model");
System.out.println("添加之后:"+hashMap);
if(hashMap.containsKey("a")) {
System.out.println("集合中存在值为 a 的 key");
}else {
System.out.println("集合中不存在值为 a 的 key");
}
if(hashMap.containsValue("Java")) {
System.out.println("集合中存在值为 Java 的 Value");
}else {
System.out.println("集合中不存在值为 Java 的 Value");
}
Set keys = hashMap.keySet();
Iterator keyIterator = keys.iterator();
System.out.println("集合中的 key:");
while(keyIterator.hasNext()) {
System.out.print(keyIterator.next()+", ");
}