Map集合的定义
java.util.Map 查找表
是Java集合框架的一员
Map本身是一个接口,这种结构体现出来是一个多行两列的表格,其中左列为Key,右列为value
Map 集合的基本使用
import java.util.HashMap;
import java.util.Map;
/*
* java.util.Map 查找表
* 是Java集合框架的一员
* Map本身是一个接口,这种结构体现出来是一个多行两列的表格,其中左列为Key,右列为value,
* Map总是根据key获取对应的value
* 常用实现类java.util.HashMap 散列表(哈希表)
* HashMap是使用散列算法实现的Map,是当今查询速度最快的数据结构
*/
public class MapDemo {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
/*
* V put(K k,V v)
* 将一组键值粗存入Map中
* Map有一个特点:Key不允许重复(key的equals决定是否为重复的key)
* 如果使用重复的key来put元素,则是替换value操作。
* 此时方法返回值为被替换的value值,否则为null
* 如果Map的value是一个包装类类型,获取时不能用基本类型接收,
* 避免因为自动拆箱导致空指针
*/
map.put("语文", 96);
map.put("数学", 86);
map.put("英语", 66);
map.put("历史", 77);
Integer value = map.put("物理", 87);
System.out.println(value);
System.out.println(map);
value = map.put("物理", 99);
System.out.println(value);
System.out.println(map);
/*
* int size() 返回当前Map中键值对 的个数
*/
int size = map.size();
System.out.println(size);
/*
* V get(Object key)
* 根据给定的key获取对应的value,如果给定的key在Map中不存在则返回值为null
*/
value = map.get("语文");
System.out.println(value);
value = map.get("政治");
System.out.println(value);
/*
* V remove(Object key)
* 根据所给定的key删除Map中这组键值对,
* 返回值为这个key对应的value
*/
value = map.remove("历史");
System.out.println(value);
System.out.println(map);
/*
* boolean containsKey(Object key)
* 判断当前Map是否包含给定的key
* boolean containsValue(Object value)
* 判断当前map是否包含给定的value
* 这里判断包含是依靠equals方法判断的
*/
boolean ck = map.containsKey("数学");
boolean cv = map.containsValue("99");
System.out.println(ck + " " + cv);
/*
* void clear()
* 清除map集合中所有元素
*/
map.clear();
System.out.println(map);
}
}
Map集合的遍历
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.BiConsumer;
/*
* Map的遍历(3种遍历方式):
* 遍历所有的key
* 遍历所有value
* 遍历所有键值对
*/
public class MapDemo02 {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("语文", 96);
map.put("数学", 86);
map.put("英语", 66);
map.put("历史", 77);
map.put("物理", 87);
/*
* Set<K> keySet()
* 将当前Map中所有的key以一个Set集合形式返回
*/
Set<String> set = map.keySet();
System.out.print("Key值: ");
for (String key : set) {
System.out.print(key + " ");
}
System.out.println();
/*
* Set<Map.Entry<K, V>> entrySet()
* 返回一个Set集合,集合中每一个元素是一个Entry实例
* Map.Entry的每一个实例表示Map中的一组键值对,有两个常用方法:
* K getKey(); 获取这组键值对的key
* V getValue(); 获取这组键值对的value
*/
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> ect : entries) {
System.out.print("key= " + ect.getKey() + " ");
System.out.println("value= " + ect.getValue());
}
/*
* Collection<V> values()
* 将当前Map中所有的value值以一个Collection集合形式返回
*/
Collection<Integer> values = map.values();
System.out.print("value值: ");
for (Integer value : values) {
System.out.print(value + " ");
}
/*
* 用forEach()输出
*/
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String s, Integer integer) {
System.out.println(s + " " + integer);
}
});
map.forEach((String key, Integer value) -> {
System.out.println(key + " " + value);
});
}
}