接口对于java编程开发程序员来说是必须了解和掌握的一种类的实现方法,下面我们就一起来了解一下,java编程环境下的map接口类型都有哪些。
Map是Java三种集合中的一种位于包中,Map作为一个接口存在定义了这种数据结构的一些基础操作,它的终实现类有很多:HashMap、TreeMap、SortedMap等等,这些终的子类大多有一个共同的抽象父类AbstractMap。在AbstractMap中实现了大多数Map实现公共的方法。本文介绍Map接口定义了哪些方法,同时JDK8又新增了哪些。
Map翻译为“映射”,它如同字典一样,给定一个key值,就能直接定位value值,它的存储结构为“key : value"形式,核心数据结构在Map内部定义了一个接口——Entry,这个数据结构包含了一个key和它对应的value。
Map接口中锁定义的方法。
int size()
返回Map中key-value键值对的数量,大值是_VALUE(2^31-1)。
boolean isEmpty()
Map是否为空,可以猜测如果size() = 0,Map就为空。
boolean containsKey(Object key)
Map是否包含key键值。
boolean containsValue(Object value)
Map是否包含value值。
V get(Object key)
通过key值获取对应的value值。如果Map中不包含key值则返回null,也有可能该key值对应的value值本身就是null,此时要加以区别的话可以先使用containsKey方法判断是否包含key值。
V put(K key, V value)
向Map中存入key-value键值对,并返回插入的value值。
Map从JDK5过后就改为了泛型类,get方法的参数不是泛型K,而是一个Object对象呢包括上面的containsKey(Object)和containsValue(Object)参数也是Object而不是泛型。在这个地方似乎是使用泛型更加合适。
V remove(Object key)
删除Map中的key-value键值对。
void putAll(Map m)
这个方法的参数是一个Map,将传入的Map全部放入此Map中,当然对参数Map有要求,“ extends K”意味着传入的Map其key值需要是此Map的key或者是子类,value同理。
void clear()
移除Map中所有的key-value键值对。
Set keyset()
返回key的set集合,注意set是无序且不可存储重复的值,当然Map中也不可能存在重复的key值,也没有有序无序一说。其实这个方法的运用还是有点意思的,这会涉及到Java对象引用相关的一些知识。
在之前提到了一个方法和这个类似——getOrDefault。注意不要搞混了,调用putIfAbsent会直接插入,而getOrDefault不会直接插入到Map中。
default boolean remove(Object key, Object value)
原来的remove方法是直接传递一个key从Map中移除对应的key-value键值对。新增的方法需要同时满足key和value同时在Map有对应键值对时才删除
default boolean replace(K key, V oldValue, V newValue)
和replaceAll类似,当参数中的key-oldValue键值对在Map存在时,则使用newValue替换oldValue。
default V replace(K key, V value)
这个方法是上面方法的重载,不会判断key值对应的value值,而是直接使用value替换key值原来对应的值。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。