国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java的Collections框架的理解

瀏覽:3日期:2024-06-15 13:28:36
內容: 在Java 2的Collections框架中,主要包括兩個接口及其擴展和實現類:Collection接口和Map接口。兩者的區別在于前者存儲一組對象,后者則存儲一些關鍵字/值對。public interface java.util.Map { //Altering Methods public Object put(Object key, Object value); public Object remove(Object key); public void putAll(java.util.Map); public void clear(); //Querying Methods public Object get(Object key); public int size(); public boolean isEmpty(); public boolean containsKey(Object); public boolean containsValue(Object); public boolean equals(Object); //Viewing Methods public java.util.Set keySet(); //Gets keys public java.util.Collection values(); //Gets values public java.util.Set entrySet(); //Gets mappings public static interface java.util.Map.Entry { //a map-entry (single key/value pair) public Object getKey(); //returns current entry key public Object getValue(); //returns current entry value public Object setValue(Object value); public boolean equals(Object); public int hashCode(); }}Map接口提供了方便易用的方法,通過這些方法可以查詢、查看、修改當前Map的內容。注意對于Map接口的keySet()方法返回一個Set,Set是Collection接口的一個擴展,包含不重復的一組對象。因為Map中的key是不可重復的,所以得到所有key的keySet()方法返回一個Set對象。Map接口本身還包含了一個Map.Entry接口,一個Map.Entry就是Map中的一個關鍵字/值對。Map接口中的entrySet()方法就返回了一個集合對象,其中每一個元素都實現了Map.Entry接口。Map接口的get(Object key),put(Object key,Object value),和remove(Object key)方法都有同一個問題。他們的返回類型都是Object,當返回null時,可以猜測為調用那個方法前那個key不存在。但是只有在null不允許作為Map的值時可以這樣猜測。所有Map接口的通用實現都允許null作為key或者value,這就說當返回一個null值,就可以意味著很多事情。只是因為通用實現允許null值,你不能下那個映射有null值的結論。如果你確知沒有null值,那返回null值就意味著調用那個方法前,映射里并沒有那個鍵。否則,你必須調用containsKey(Object key)來看看那個Key是否存在。Hashtablejava.util.Hashtable實現了Map接口,在Hashtable中使用key對象的hashCode()作為對應的對象的相對存儲地址,以便實現根據關鍵字快速查找對象的功能。所以只有一個實現了hashCode()和equals()方法的對象才可作為Hashtable的key。null值不能作為關鍵字或值。public class java.util.Hashtable extends Dictionary implements Cloneable, Map, Serializable { //Hashtable constructors //construct a default Hashtable with default capacity and load of 0.75 public Hashtable(); //construct a Hashtable with passed capacity and default load of 0.75 public Hashtable (int initialCapacity); //construct Hashtable with passed capacity and load public Hashtable(int initialCapacity, float load); //construct Hashtable with passed mapping public Hashtable(Map); //Hashtable specific methods //checks if Object is in Hashtable public boolean contains(Object); //returns Enumeration of elements in Hashtable public Enumeration elements(); //returns Enumeration of keys in hashtable public Enumeration keys(); //creates shallow copy of Hashtable(structure copied, but not key/values) public Object clone(); //prints out key/value pairs of Hashtable elements public String toString(); //reorganizes all elements in Hashtable, and increases Hashtable capacity protected void rehash(); //get Value from passed in key public Object get(Object); //insert key/value pair public Object put(Object key, Object value); }Hashtable是Java 2集合框架推出之前的一個老的工具類,在新的Java 2集合框架下,已經被HashMap取代。Hashtable和HashMap的區別主要是前者是同步的,后者是快速失敗機制保證不會出現多線程并發錯誤(Fast-Fail)。在初始化一個Hashtable時,可以指定兩個參數:初始容量、負荷,這兩個參數強烈的影響著Hashtable的性能。容量是指對象的個數,負荷是指散列表中的實際存儲的對象個數和容量的比率。如果初始容量太小,那么Hashtable需要不斷的擴容并rehash(),而這是很耗時的;如果初始容量太大,又會造成空間的浪費。負荷則相反,負荷太小會造成空間浪費,負荷太大又會耗時(因為這會造成較多的關鍵字的散列碼重復,Hashtable使用一個鏈接表來存儲這些重復散列碼的對象)。容量的缺省值是11,負荷的缺省值是0.75,一般情況下你都可以使用缺省值來生成一個Hashtable。另外,在Hashtable中的大部分的方法都是同步的。HashMapHashMap基本實現了Map接口的全部方法。方法的簽名大家看上面的Map接口。這兒主要說說幾個Map接口中的方法。按照集合框架的實現,哈希表是單鏈表作為元素的數組,有著同樣索引值的兩個或更多入口被一起鏈結到單鏈表中。哈希表聲明如下: private Entry[] table;組件類型Entry是Map.Entry接口的實現,Map.Entry聲明于Map接口內。下邊是Map.Entry接口的簡化實現: private static class Entry implements Map.Entry{ int hashCode; Object key; Object value; Entry next; Entry(int hashCode,Object key,Object value,Entry next){ This.hashCode=hashCode; This.key=key; This.value=value; This.next=next; } public Object getKey(){ return key; } public Object getValue(){ return value; } public Object setValue(Object value){ Object oldValue=this.value; This.value=value; Return oldValue; }}SortedMap是Map接口的子接口,SortedMap的標準實現是TreeMap,實現了一個排序的Map。這里翻譯的是對《Java 規則》(Java Rules)中對Java2的集合框架的研究。詳細可以參考Java2源碼中的集合實現代碼和API doc。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
主站蜘蛛池模板: 国产精品免费久久久免费 | 手机看黄av免费网址 | 一级一级毛片免费播放 | 国产成人精品magnet | 999久久| 欧美xxxx成人免费网站 | 国产高清美女一级a毛片久久 | 日韩一区二区不卡中文字幕 | 国产福利微拍精品一区二区 | 高清性色生活片久久久 | 免费三级网站 | 精品免费国产一区二区三区 | 国产91精品一区二区 | 色琪琪一本到影院 | 国产成人国产在线观看入口 | 99热久久免费精品首页 | 亚洲资源在线观看 | 国产一区二区三区四区在线观看 | 欧美日韩在线视频观看 | 日本特黄特色免费大片 | 日韩三及片 | 免费大片黄手机在线观看 | 国产一级免费 | 国产高清视频免费最新在线 | 中文字幕 亚洲 一区二区三区 | 国产成人mv在线观看入口视频 | 一级成人a免费视频 | 欧美成人毛片免费网站 | 欧美一区二区精品系列在线观看 | 日韩三级视频在线观看 | 欧美一区a | 韩国一大片a毛片 | 亚洲香蕉久久一区二区三区四区 | 亚洲日本在线看片 | 国产情侣久久精品 | 亚欧色视频在线观看免费 | 成人网视频免费播放 | 国产精品成人aaaaa网站 | 亚洲精品成人一区二区 | 欧美jizz19性欧美 | 国产呦系列呦 |