|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。
后面,我们已体系的对List举行了进修。接上去,我们先进修Map,再进修Set;由于Set的完成类都是基于Map来完成的(如,HashSet是经由过程HashMap完成的,TreeSet是经由过程TreeMap完成的)。
起首,我们看看Map架构。
如上图:
Map是映照接口,Map中存储的内容是键值对(key-value)。
AbstractMap是承继于Map的笼统类,它完成了Map中的年夜部分API。别的Map的完成类能够经由过程承继AbstractMap来削减反复编码。
SortedMap是承继于Map的接口。SortedMap中的内容是排序的键值对,排序的办法是经由过程对照器(Comparator)。
NavigableMap是承继于SortedMap的接口。比拟于SortedMap,NavigableMap有一系列的导航办法;如"猎取年夜于/即是某对象的键值对"、“猎取小于/即是某对象的键值对”等等。
TreeMap承继于AbstractMap,且完成了NavigableMap接口;因而,TreeMap中的内容是“有序的键值对”!
HashMap承继于AbstractMap,但没完成NavigableMap接口;因而,HashMap的内容是“键值对,但不包管序次”!
Hashtable固然不是承继于AbstractMap,但它承继于Dictionary(Dictionary也是键值对的接口),并且也完成Map接口;因而,Hashtable的内容也是“键值对,也不包管序次”。但和HashMap比拟,Hashtable是线程平安的,并且它撑持经由过程Enumeration往遍历。
WeakHashMap承继于AbstractMap。它和HashMap的键范例分歧,WeakHashMap的键是“弱键”。
有了下面的整体框架以后,我们先来看看各个接口和笼统类的先容;前面再对各个完成类举行具体申明。
1Map
Map的界说以下:
publicinterfaceMap<K,V>{}
Map是一个键值对(key-value)映照接口。Map映照中不克不及包括反复的键;每一个键最多只能映照到一个值。
Map接口供应三种collection视图,同意以键集、值集或键-值映照干系集的情势检察某个映照的内容。
Map映照按次。有些完成类,能够明白包管其按次,如TreeMap;另外一些映照完成则不包管按次,如HashMap类。
Map的完成类应当供应2个“尺度的”机关办法:第一个,void(无参数)机关办法,用于创立空映照;第二个,带有单个Map范例参数的机关办法,用于创立一个与其参数具有不异键-值映照干系的新映照。实践上,后一个机关办法同意用户复制恣意映照,天生所需类的一个等价映照。只管没法强迫实行此倡议(由于接口不克不及包括机关办法),可是JDK中一切通用的映照完成都服从它。
Map的API- abstractvoidclear()
- abstractbooleancontainsKey(Objectkey)
- abstractbooleancontainsValue(Objectvalue)
- abstractSet<Entry<K,V>>entrySet()
- abstractbooleanequals(Objectobject)
- abstractVget(Objectkey)
- abstractinthashCode()
- abstractbooleanisEmpty()
- abstractSet<K>keySet()
- abstractVput(Kkey,Vvalue)
- abstractvoidputAll(Map<?extendsK,?extendsV>map)
- abstractVremove(Objectkey)
- abstractintsize()
- abstractCollection<V>values()
复制代码 申明:
(01)Map供应接口分离用于前往键集、值集或键-值映照干系集。
entrySet()用于前往键-值集的Set汇合
keySet()用于前往键集的Set汇合
values()用户前往值集的Collection汇合
由于Map中不克不及包括反复的键;每一个键最多只能映照到一个值。以是,键-值集、键集都是Set,值集时Collection。
(02)Map供应了“键-值对”、“依据键猎取值”、“删除键”、“猎取容量巨细”等办法。
2Map.Entry
Map.Entry的界说以下:
interfaceEntry<K,V>{}
Map.Entry是Map中外部的一个接口,Map.Entry是键值对,Map经由过程entrySet()猎取Map.Entry的键值对汇合,从而经由过程该汇合完成对键值对的操纵。
Map.Entry的API
abstractbooleanequals(Objectobject)
abstractKgetKey()
abstractVgetValue()
abstractinthashCode()
abstractVsetValue(Vobject)
3AbstractMap
AbstractMap的界说以下:
publicabstractclassAbstractMap<K,V>implementsMap<K,V>{}
AbstractMap类供应Map接口的主干完成,以最年夜限制地削减完成此接口所需的事情。
要完成不成修正的映照,编程职员只需扩大此类并供应entrySet办法的完成便可,该办法将前往映照的映照干系set视图。一般,前往的set将顺次在AbstractSet上完成。此set不撑持add()或remove()办法,其迭代器也不撑持remove()办法。
要完成可修正的映照,编程职员必需别的重写此类的put办法(不然将抛出UnsupportedOperationException),entrySet().iterator()前往的迭代器也必需别的完成其remove办法。
AbstractMap的API- abstractSet<Entry<K,V>>entrySet()
- voidclear()
- booleancontainsKey(Objectkey)
- booleancontainsValue(Objectvalue)
- booleanequals(Objectobject)
- Vget(Objectkey)
- inthashCode()
- booleanisEmpty()
- Set<K>keySet()
- Vput(Kkey,Vvalue)
- voidputAll(Map<?extendsK,?extendsV>map)
- Vremove(Objectkey)
- intsize()
- StringtoString()
- Collection<V>values()
- Objectclone()
复制代码 4SortedMap
SortedMap的界说以下:
publicinterfaceSortedMap<K,V>extendsMap<K,V>{}
SortedMap是一个承继于Map接口的接口。它是一个有序的SortedMap键值映照。
SortedMap的排序体例有两种:天然排序大概用户指定对照器。拔出有序SortedMap的一切元素都必需完成Comparable接口(大概被指定的对照器所承受)。
别的,一切SortedMap完成类都应当供应4个“尺度”机关办法:
(01)void(无参数)机关办法,它创立一个空的有序映照,依照键的天然按次举行排序。
(02)带有一个Comparator范例参数的机关办法,它创立一个空的有序映照,依据指定的对照器举行排序。
(03)带有一个Map范例参数的机关办法,它创立一个新的有序映照,其键-值映照干系与参数不异,依照键的天然按次举行排序。
(04)带有一个SortedMap范例参数的机关办法,它创立一个新的有序映照,其键-值映照干系和排序办法与输出的有序映照不异。没法包管强迫实行此倡议,由于接口不克不及包括机关办法。
检察本栏目更多出色内容:http://www.bianceng.cn/Programming/Java/
<p>
但是对于JAVA技术类的学习,我觉得大课堂反而会影响自身独立思考的过程,因为上课的时候,老师讲课的速度很快为了不遗漏要点,通常会仔细的听, |
|