Map初见
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map初见相关的知识,希望对你有一定的参考价值。
* @see HashMap * @see TreeMap * @see Hashtable * @see SortedMap * @see Collection * @see Set * @since 1.2 */ public interface Map<K,V> { }
Map 是一个接口, Map 里面有个Entry<K,V>类.一个Map里面不会有重复的key,一个key对应一个value。
Map接口里面定义了很多基本的方法, 如clear(),size(),value(),repalce(),get()等等。
Map主要围绕的 key,value , 以及Entry<K,V> .
Map中还在自身接口中, 又定义了一个Entry的接口,这个是所有的Map类型都会实现的一个接口。
说实话,个人感觉, Map有点像是个list,( List<Entry<E,V>>), list里面装的是0个或者0个以上的Entry<K,V>。但是里面的方法肯定各有各的特点。
那么里面的方法是如何实现的呢, 现在取AbstractMap 这个实现了Map接口的抽象来看看里面的方法。
看看最常用的get(k)方法, 使用Iterator,遍历map里的所有entry,找到对应value,简单易懂.
注意,在AbstractMap中,有个类SimpleEntry<K,V> 实现了 Map.Entry<K,V>. 并实现了里面的方法.
所有实现Map接口的类,都会有对应自己的Entry 实现Map.Entry<K,V>.
public V get(Object key) { Iterator<Entry<K,V>> i = entrySet().iterator(); if (key==null) { while (i.hasNext()) { Entry<K,V> e = i.next(); if (e.getKey()==null) return e.getValue(); } } else { while (i.hasNext()) { Entry<K,V> e = i.next(); if (key.equals(e.getKey())) return e.getValue(); } } return null; }
以上是关于Map初见的主要内容,如果未能解决你的问题,请参考以下文章