关于Map接口中常用的方法:
1、Map接口和Collection接口没有继承关系。
2、Map集合以key和value(键值对)的方式存储数据。
key和value都是引用数据类型,存储的都是对象的内存地址。
key起到主导的地位,value是key的一个附属品。
3、Map集合中key是唯一的,即所有键值对的key部分都不相同。
Map集合中不同键值对的value是可以相同的。
例如:<key1, value1>,<key2, value1>。
往Map集合中添加key已经存在的新键值对,会覆盖原来的键值对。
4、Map接口中常用的方法:
Map属于接口,接口中的方法为抽象方法,public abstract可以省略。
(1)V put(K key, V value);
向集合中添加元素。
(2)V get(Object key);
通过指定key获取value。
(3)int size();
获取集合中元素的个数。
(4)void clear();
清空集合,元素个数变为0。
(5)boolean isEmpty();
判断集合元素个数是否为0。
(6)boolean containsKey(Object key);
判断集合中是否包含指定key。
(7)boolean containsValue(Object value);
判断集合中是否包含指定value。
注意:contains()方法底层都调用了equals()方法,再次强调存入集合元素的类一定要重写equals()方法。
(8)Set<泛型> keySet();
获取集合中所有的key,返回一个包含所有key元素的Set集合。
(9)Collection values();
获取集合中所有的value,返回一个包含所有value元素的Collection集合。
(10)V remove(Object key);
删除指定key的键值对。
(11)default boolean replace(K key, V oldValue, V newValue);
修改键值对<key, oldValue>的value为newValue。
(12)Set<Map.Entry<K,V>> entrySet();
将Map集合转换成Set集合。
Map集合中每个键值对组成一个元素(key=value),存入Set集合,每个元素的类型是Map.Entry<K,V>。
测试代码:
import java.util.*;
public class Test01 {
public static void main(String[] args) {
// 创建Map集合
Map<Integer, String> hashMap = new HashMap<Integer, String>(); // 泛型指定键值对为<Integer, String>类型
// 添加键值对
hashMap.put(1, "张三"); // 这里的1会自动装箱成Integer类型
hashMap.put(1, "张三三"); // 会添加成功吗?可以,但key不能相同,所以会覆盖原来的数据
// 输出集合中元素的个数
System.out.println(hashMap.size()); // 1
hashMap.put(2, "张三三"); // 会添加成功吗?会的,键值对的value可以相同
System.out.println(hashMap.size()); // 2
// 删除集合中key为2的键值对
hashMap.remove(2);
System.out.println(hashMap.size()); // 1
// 获取键值对key为1的value
String value = hashMap.get(1);
System.out.println(value); // 张三三
// 修改指定键值对的value值
hashMap.replace(1, "张三三", "张三");
System.out.println(hashMap.get(1)); // 张三
hashMap.put(2, "李四");
hashMap.put(3, "王五");
hashMap.put(4, "赵六");
// 是否包含指定key
boolean cKey1 = hashMap.containsKey(2);
boolean cKey2 = hashMap.containsKey(6);
System.out.println(cKey1); // true
System.out.println(cKey2); // false
// 是否包含指定value
boolean cValue1 = hashMap.containsValue("李四");
boolean cValue2 = hashMap.containsValue("熊大");
System.out.println(cValue1); // true
System.out.println(cValue2); // false
// 获取Map集合中所有的key
Set<Integer> keys = hashMap.keySet(); // Map中所有的key没有相同的,故返回的是一个Set集合
// 遍历Set集合
for (Integer i : keys) {
System.out.print(i + " "); // 1 2 3 4
}
System.out.println();
// 获取Map集合中所有的value
Collection<String> values = hashMap.values(); // Map中所有的value是可以相同的,故返回的是一个Collection集合
// 遍历Collection集合
for (String str : values) {
System.out.print(str + " "); // 张三 李四 王五 赵六
}
System.out.println();
// 把Map集合转换成Set集合
Set<Map.Entry<Integer, String>> mapToSet = hashMap.entrySet(); // 每个键值对的key与value合并成“key=value”,组成Set的一个元素
// 遍历转换后的Set集合
for (Map.Entry<Integer, String> m : mapToSet) {
System.out.print(m + " "); // 1=张三 2=李四 3=王五 4=赵六
}
System.out.println();
// Map集合的元素清空
hashMap.clear();
System.out.println(hashMap.isEmpty()); // true
System.out.println(hashMap.size()); // 0
}
}