大有作为的集合_Map系列

大有可为的java集合

Map简述

Map引用的是:import java.util.Map;
1. 接口表示键和值之间的映射关系
2. Map 不能包含重复的键,每个键最多可以映射一个值。一些实现允许null键和null值,如HashMap和LinkedHashMap,但有些实现不允许,比如:TreeMap
3.Map 的顺序取决于具体的实现,例如 TreeMap 和LinkedHashMap 保证了元素的顺序,而 HashMap 则没有
4.Map 使用hashCode equals 方法来获取和存放操作。 所以可变类不适合Map键。 如果 hashCode 或 equals 的值在put之后发生变化,则在get操作中将无法获得正确的值。
5.AbstractMap 类提供了 Map 接口的主要实现,大多数Map实现类扩展了 AbstractMap 类并实现了所需的方法。
异常:
1.当访问的值不存在的时候,方法就会抛出一个NoSuchElementException 异常.
2.当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException 异常。
3.当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
4.当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException 异常。

源码分析

一、查询操作
1.int size(); //返回此 map 中键值映射的数量。如果 map 包含多于 Integer.MAX_VALUE 的元素,返回 Integer.MAX_VALUE。
2.boolean isEmpty(); // 如果此 map 中不包含键值映射,返回 true,否则返回 false。
3.boolean containsKey(Object key); //如果此 map 的映射中包含指定的映射键,则返回 true。
4.boolean containsValue(Object value); //如果此 map 中将一个或多个键映射到指定的 value,则返回 true。
5.V get(Object key);
二、修改操作
1.V put(K key, V value); //将指定的值于此 map 中指定的键相关联。如果 map 中已经存在该键,那么将会替换值
2.V remove(Object key);//如果此 map 中存在指定 key 的映射,那么删除这个映射,并返回对于的值。如果不存在指定 key 的映射,那么返回 null。(如果此 map 允许 null 值,那么返回 null 并不一定表示该 map 不存在指定 key 的映射)
批量操作
1.void putAll(Map<? extends K, ? extends V> m);//将指定 map 中的所有映射复制到此 map。如果在操作过程中修改了指定的 map,则此操作的行为是未定义的。
2.void clear(); //从此 map 中删除所有的映射。
查看
1.Set keySet(); //返回此 map 中包含所有键的 Set 集合。该集合支持删除元素,可以通过 Iteration.remove,Set.remove,removeAll,retainAll和 clear 操作从 map 中删除相应的映射。它不支持 add 或 addAll 操作。
2.Collection values();//返回此 map 中包含所有值的 Collection 集合。该集合支持删除元素,可以通过 Iteration.remove,Collection.remove,removeAll,retainAll该集合支持删除元素,可以通过 Iteration.remove,Collection.remove,removeAll,retainAll
3.Set<Map.Entry<K, V>> entrySet(); //返回此 map 中包含所有映射(Map.Entry)的 Set 集合。
比较和散列
1.boolean equals(Object o); //将指定的对象与此 map 进行比较以获得相等性。 如果给定的对象也是一个 map,并且两个 map 代表相同的映射,则返回 true。
2.int hashCode(); //返回此 map 的哈希码。map 的哈希码定义是 map 的 entrySet() 集合中每个条目的哈希码的总和。
其实还有
java8新特性
1.getOrDefault //如果指定的 key 存在,则返回指定 key 对应的 value。如果不存在则返回指定的默认 value 值。
2.forEach //遍历 Map 中所有的 Entry,对 key、value 进行处理,
默认的实现不保证此方法的同步或原子性,要想保证,其实现必须覆写该方法并记录其并发属性。
3.replaceAll //将 map 中每个 Entry 的 value 替换为给定的 value。
4.remove //当指定的 key 映射到指定的 value 时,删除该 Entry。
5.replace //当指定的 key 和 value 是映射关系时,用 newValue 替换指定 value。

总结

Map 接口作为映射集合的顶层父接口,里面定义了一些必要的操作方法。其中大部分是抽象的,交由具体实现类根据自身的数据结构作具体的实现。另外还包括了 Java 8 中新引入的默认方法、静态方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值