今天学习的内容是集合类之Map接口
Map接口的实现类统称为Map集合(映射),与列表和集不同,映射中存储的元素是键值对:key/value。映射中key不能重复且每个key只能映射一个value,但不同key映射的value可以重复,举例来说:身份证号不能重复且只能对应一个人,但人可以重名。
Map接口的主要方法:
- put(K key, V value) 向映射中添加键值对,返回之前和指定key关联的value,如果没有则返回null
- putAll(Map<? extends K,? extends V> m) 将指定映射中的所有键值对添加到映射中
- clear() 移除映射中所有键值对
- remove(Object key) 根据指定的key删除键值对,返回与指定key关联的value
- containsKey(Object key) 判断映射中是否包含指定key
- containsValue(Object value) 判断映射中是否包含指定value
- isEmpty() 判断映射是否为空
- get(Object key) 返回指定key所映射的value,如果没有返回null
- size() 获取映射中键值对个数
- keySet() 返回映射中所包含的key形成的的Set集合
- entrySet() 返回映射中所包含的映射关系形成的Set集合
- values() 返回映射中所包含的value形成的Collection集合
示例程序:
public class Test59 {
public static void main(String[] args) {
// 添加
Map<Integer, String> map = new HashMap<>();
System.out.println(map.put(1, "haha"));// null
System.out.println(map.put(1, "a"));// haha
// 映射中key不能重复,因此存储相同key会将value覆盖
map.put(2, "b");
map.put(3, "c");
map.put(4, "a");// 不同key映射的value可以重复
System.out.println(map);// {1=a, 2=b, 3=c, 4=a}
Map<Integer, String> map_temp = new HashMap<>();
map_temp.put(5, "d");
map_temp.put(6, "e");
map.putAll(map_temp);
System.out.println(map);// {1=a, 2=b, 3=c, 4=a, 5=d, 6=e}
// 删除
System.out.println(map.remove(6));// e
System.out.println(map);// {1=a, 2=b, 3=c, 4=a, 5=d}
// map.clear();
// 判断
System.out.println(map.containsKey(6));// false
System.out.println(map.containsValue("a"));// true
System.out.println(map.isEmpty());// false
// 获取
String str = map.get(1);
System.out.println(str);// a
// 遍历获取映射中所有元素:第一种方法
Set<Integer> keySet = map.keySet();
Iterator<Integer> it = keySet.iterator();
while (it.hasNext()) {
Integer key = it.next();
String value = map.get(key);
System.out.println(key + ":" + value);
}
// 遍历获取映射中所有元素:第二种方法
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
Iterator<Map.Entry<Integer, String>> it_1 = entrySet.iterator();
while (it_1.hasNext()) {
Map.Entry<Integer, String> me = it_1.next();
System.out.println(me.getKey() + ":" + me.getValue());
}
// 遍历获取映射中所有value
Collection<String> c = map.values();
Iterator<String> it_2 = c.iterator();
while (it_2.hasNext()) {
String value = it_2.next();
System.out.println(value);
}
}
}