集合进阶-map
Map集合的概述和使用
Map集合概述
- Interface Map<K,V> K:键的类型 V:值的类型
- 将键映射到值的对象;不能包含重复的键;每个键可以映射到最多一个值
- 举例,学生的学号(键)和姓名(值)
创建Map集合的对象
- 使用多态的方式
- 具体的实现类 HashMap
Map基本功能
方法名 | 说明 |
---|---|
V put(K key,V value) | 添加元素(也可以更新指定键的值) |
V remove(Object key) | 根据键删除值(返回键被删除的值) |
void clear() | 移除所有键值元素 |
boolean containsKey(Object key) | 判断集合中是否包含指定的键 |
boolean containsValue(Object value) | 判断集合是否包含指定的值 |
boolean isEmpty() | 判断集合是否为空 |
int size() | 集合的长度(集合中键值对的个数) |
Map集合的获取功能
方法名 | 说明 |
---|---|
V get(Object key) | 根据键获取值 |
Set keySet() | 获取所有键的集合 |
Collection values() | 获取所有值的集合 |
Set<Map.Entry<K,V>> entrySet() | 获取所有键值对 对象的集合 |
注:keySet和values方法的返回值是Set接口实现类和Collection接口实现类的具体对象
Map集合的遍历
方法一
- 获取所有键的集合,使用keySet()方法实现
- 遍历这个集合
- 利用get(Object key)方法在集合中获取到每一个键的值
public class Test {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("no1", "Xiaobai");
map.put("no2", "Xiaoxue");
map.put("no3", "Xiaokai");
Set<String> keyset = map.keySet();
for (String s : keyset) {
System.out.println(s + " " + map.get(s));
}
}
}
方法二
- 获取所有键值对 对象的集合,使用entrySet()方法实现
- 遍历键值对 对象的集合,得到每一个键值对 对象
- 使用getKey()得到键,使用getValue得到值
public class Test2 {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("no1", "Xiaobai");
map.put("no2", "Xiaoxue");
map.put("no3", "Xiaokai");
Set<Map.Entry<String, String>> entrySet = map.entrySet();
for (Map.Entry<String, String> me : entrySet) {
System.out.println(me.getKey() + " " + me.getValue());
}
}
}
Map补充
HashMap实现类中重写了toString方法,输出格式为 键=值
当key为引用类型对象时,我们需要在类中重写hashCode和equals方法才能保证键唯一性
Map中如果想要实现按键值有序排列元素,可以使用TreeMap实现类