[零基础学JAVA]Java SE应用部分-35.JAVA类集之四
生活随笔
收集整理的這篇文章主要介紹了
[零基础学JAVA]Java SE应用部分-35.JAVA类集之四
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JAVA按以下重要順序
· 面向對象
· 類集框架
· JDBC
· 文件編程 本季目標 主要講解以下的內容:
· Collection
· List
· Set
· Map
· Iterator
· ListIteator
· Enumeration
· for…each語句(JDK 1.5的新特性)
· Comparable接口
· 二叉樹 1、類集結構 (1)類集的產生目的 類集簡單來講就是一個動態的對象數組,此對象數組可以改變大小,可以任意的實現對象的增加、刪除、輸出。所有的類集存放java.util包中。 (2)類集的劃分
1、存放單值:Collection
2、存放一對值:Map
3、輸出:Iterator (3)類集的具體概念
<1>Collection(只能存放一個值)
|- 主要功能:用于輸出使用
|- 子接口:List(允許有重復的元素,而且加入的順序就是輸出的順序)
??? |- 子類:ArrayList,是在Java 2之后推出的,是新的類,是使用異步處理方式,其性能較高
??? |- 子類:Vector,是在JDK 1.0的時候就推出,因為是舊的類,有很多List所沒有的功能,是使用同步處理方式,其線程安全性較高,會比較慢。使用Vector除了可以使用Iterator輸出之外,也可以使用Enumeration進行輸出。兩者是通用的。Vector子類允許直接使用addElement(Object obj),也是可以向集合中加入元素的。
??? |- 自己新增的方法:
??????? |- 取每一個對象:public Object get(int ind) ;
??? |- 子類:Stack(棧)
|- 子接口:Set(不允許有重復元素,重復元素會替換)?如何可以區分重復元素呢??
??? |- 子類:HashSet:是無序列存放
??? |- 子類:TreeSet:有序存放,是通過Comparable接口完成的
|- 常用方法:
??? |- 增加一個對象:public boolean add(Object obj)
??? |- 取得類集的長度:public int size() ;
??? |- 判斷集合中的內容是否為空:public boolean isEmpty()
??? |- 刪除一個對象:public boolean remove(Object obj) :就必須牽扯到對象的比較狀態。
??? |- 實例化Iterator對象:public Iterator iterator() ;
<2>JDK 1.5提供了一個方便的輸出操作:for…each語句。
<3>Iterator接口輸出是最常見的
|- 常用方法
??? |- public boolean hasNext():判斷是否有下一個元素
??? |- public Object next():取出下一個元素
|- 子接口:ListIterator,可以進行雙向輸出,只對于List接口有用
??? |- 常用方法:具備了Iterator接口中的全部內容
??????? |- public boolean hasPrevious()
??????? |- public Object previous()?
<4>Enumeration(在1.5之后也加入、泛型支持哈~)
|- 常用方法:
??? |- 判斷是否有下一個元素:public boolean hasMoreElements()
??? |- 取出元素:public Object element()
5、 Map(存放一對值)
|- 功能:與Collection的功能不一樣,Map的主要功能是用于查找使用的。
|- 注意點:
??? |- 使用Map操作時,不能直接使用Iterator進行輸出。
??? |- 而且里面不能有重復key。
??? |- 如果非要使用Iterator進行輸出,則必須按以下的步驟進行操作:
|- Map --> Set --> Iterator --> Map.Entry --> key與value的分離
|- 常用子類:
??? |- HashMap:無序存放,是新的類,是JDK 1.2時推出的,是異步處理,性能較高
??? |- Hashtable:是舊的類,是JDK 1.0時推出的,是線程安全的,性能較低
??????? |- Properties(重點):屬性文件操作類
??? |- TreeMap:有序存放
|- 常用方法:
??? |- 向集合中保存數據:public Object put(Object key,Object value):返回的是value
??? |- 從集合中查找數據:public Object get(Object key):根據key查找。
??? |- 將Map數據變為Set實例:Set<Map.Entry<K,V>> entrySet()
??? |- 將全部的key變為set實例:Set<K> keySet()
??? |- 將全部的vlaue變為Collection接口實例:Collection<V> values()
|- Map.Entry:保存key與value
??? |- public Object getKey()
??? |- public Object getValue()
|- 存放key的注意點: ################Michael分割線#################### 2、代碼講解 (11)HashMap Map的基本應用 ? 如果查到了,則返回具體的值,如果沒有查到,則返回null 使用Iterator輸出Map接口中的內容 HashSet:是無序列存放滴~~~ 將全部的key進行輸出 輸出全部的值 (12)Hashtable (13)TreeMap 按key進行排序,本操作中依然使用了Comparable接口。 TreeSet:有序存放,是通過Comparable接口完成的 (14)Stack 入棧:public Object push(Object obj)
出棧:public Object pop()
注意點:如果此時棧中已經沒有內容了,則會出現異常。 (15)Properties(重點)
· 屬性操作類,所有的key 與value 都按屬性設置,都是字符串。而且此屬性文件可以直接保存在文件中,或從文件中讀取出來。
設置屬性:public Object setProperties(String key,String value)
取得屬性:
|- public String getProperty(String key) :根據key讀取屬性,返回值
|- public String getProperty(String key,String def) :如果沒有讀到值,則返回def指定的內容。
保存在文件中:
|- 保存成普通文件:public void store(OutputStream out,String comments) throws IOException
|- 保存成XMl文件:public void storeToXML(OutputStream out,String comments) throws IOException
從文件中讀取屬性:
|- 從普通文件中讀取:public void load(InputStream input) throws IOException
|- 從XML文件中讀取:public void loadFromXML(InputStream input) throws IOException 將內容保存成普通文件: 將內容保存為XML文件: 從XML文件中把屬性讀取出來 (16)Map重要補充 以上的程序可以通過key找到value。
現在把代碼反過來 代碼反過來之后,發現沒有得到真正想要的內容,而是返回了null。
此時如果要通過匿名對象來當作key,找到屬性的話,就必須牽扯到Object中的幾個方法:
· 對象比較:
· 通過hashCode; Java中是通過equals和hashCode方法去確認對象唯一性,可以進行比較。
但是以上的程序需要一點更改,因為不能讓所有對象的hashCode方法的返回值都是一樣的,所以可以經過一些自己簡單的運算。 一個完整的類最好覆寫Object類中的三個方法:
· hashCode
· equals
· toString (17)額外補充(對象克隆) 就是把對象的內容重新復制一份,復制出一個新的對象
protected Object clone() throws CloneNotSupportedException 克隆方法是一個受保護的方法。所以在其需要對象被克隆的子類中必須擴大權限,否則外部無法看見。
對象所在的類必須實現Cloneable接口 Java程序中常用的有兩大標識接口:
· 可序列化:Serializable
· 可克隆:Cloneable 總結 就是向里面不斷加入元素,可以動態的擴充,而且可以有存放單值的,也可以有存放一對值的。
而且在集合中對于排序,使用的是Comparable接口。
實例的模型很重要 —— Hibernate、EJB 3.0。 ######################Michael分割線#############################
· 面向對象
· 類集框架
· JDBC
· 文件編程 本季目標 主要講解以下的內容:
· Collection
· List
· Set
· Map
· Iterator
· ListIteator
· Enumeration
· for…each語句(JDK 1.5的新特性)
· Comparable接口
· 二叉樹 1、類集結構 (1)類集的產生目的 類集簡單來講就是一個動態的對象數組,此對象數組可以改變大小,可以任意的實現對象的增加、刪除、輸出。所有的類集存放java.util包中。 (2)類集的劃分
1、存放單值:Collection
2、存放一對值:Map
3、輸出:Iterator (3)類集的具體概念
<1>Collection(只能存放一個值)
|- 主要功能:用于輸出使用
|- 子接口:List(允許有重復的元素,而且加入的順序就是輸出的順序)
??? |- 子類:ArrayList,是在Java 2之后推出的,是新的類,是使用異步處理方式,其性能較高
??? |- 子類:Vector,是在JDK 1.0的時候就推出,因為是舊的類,有很多List所沒有的功能,是使用同步處理方式,其線程安全性較高,會比較慢。使用Vector除了可以使用Iterator輸出之外,也可以使用Enumeration進行輸出。兩者是通用的。Vector子類允許直接使用addElement(Object obj),也是可以向集合中加入元素的。
??? |- 自己新增的方法:
??????? |- 取每一個對象:public Object get(int ind) ;
??? |- 子類:Stack(棧)
|- 子接口:Set(不允許有重復元素,重復元素會替換)?如何可以區分重復元素呢??
??? |- 子類:HashSet:是無序列存放
??? |- 子類:TreeSet:有序存放,是通過Comparable接口完成的
|- 常用方法:
??? |- 增加一個對象:public boolean add(Object obj)
??? |- 取得類集的長度:public int size() ;
??? |- 判斷集合中的內容是否為空:public boolean isEmpty()
??? |- 刪除一個對象:public boolean remove(Object obj) :就必須牽扯到對象的比較狀態。
??? |- 實例化Iterator對象:public Iterator iterator() ;
<2>JDK 1.5提供了一個方便的輸出操作:for…each語句。
<3>Iterator接口輸出是最常見的
|- 常用方法
??? |- public boolean hasNext():判斷是否有下一個元素
??? |- public Object next():取出下一個元素
|- 子接口:ListIterator,可以進行雙向輸出,只對于List接口有用
??? |- 常用方法:具備了Iterator接口中的全部內容
??????? |- public boolean hasPrevious()
??????? |- public Object previous()?
<4>Enumeration(在1.5之后也加入、泛型支持哈~)
|- 常用方法:
??? |- 判斷是否有下一個元素:public boolean hasMoreElements()
??? |- 取出元素:public Object element()
5、 Map(存放一對值)
|- 功能:與Collection的功能不一樣,Map的主要功能是用于查找使用的。
|- 注意點:
??? |- 使用Map操作時,不能直接使用Iterator進行輸出。
??? |- 而且里面不能有重復key。
??? |- 如果非要使用Iterator進行輸出,則必須按以下的步驟進行操作:
|- Map --> Set --> Iterator --> Map.Entry --> key與value的分離
|- 常用子類:
??? |- HashMap:無序存放,是新的類,是JDK 1.2時推出的,是異步處理,性能較高
??? |- Hashtable:是舊的類,是JDK 1.0時推出的,是線程安全的,性能較低
??????? |- Properties(重點):屬性文件操作類
??? |- TreeMap:有序存放
|- 常用方法:
??? |- 向集合中保存數據:public Object put(Object key,Object value):返回的是value
??? |- 從集合中查找數據:public Object get(Object key):根據key查找。
??? |- 將Map數據變為Set實例:Set<Map.Entry<K,V>> entrySet()
??? |- 將全部的key變為set實例:Set<K> keySet()
??? |- 將全部的vlaue變為Collection接口實例:Collection<V> values()
|- Map.Entry:保存key與value
??? |- public Object getKey()
??? |- public Object getValue()
|- 存放key的注意點: ################Michael分割線#################### 2、代碼講解 (11)HashMap Map的基本應用 ? 如果查到了,則返回具體的值,如果沒有查到,則返回null 使用Iterator輸出Map接口中的內容 HashSet:是無序列存放滴~~~ 將全部的key進行輸出 輸出全部的值 (12)Hashtable (13)TreeMap 按key進行排序,本操作中依然使用了Comparable接口。 TreeSet:有序存放,是通過Comparable接口完成的 (14)Stack 入棧:public Object push(Object obj)
出棧:public Object pop()
注意點:如果此時棧中已經沒有內容了,則會出現異常。 (15)Properties(重點)
· 屬性操作類,所有的key 與value 都按屬性設置,都是字符串。而且此屬性文件可以直接保存在文件中,或從文件中讀取出來。
設置屬性:public Object setProperties(String key,String value)
取得屬性:
|- public String getProperty(String key) :根據key讀取屬性,返回值
|- public String getProperty(String key,String def) :如果沒有讀到值,則返回def指定的內容。
保存在文件中:
|- 保存成普通文件:public void store(OutputStream out,String comments) throws IOException
|- 保存成XMl文件:public void storeToXML(OutputStream out,String comments) throws IOException
從文件中讀取屬性:
|- 從普通文件中讀取:public void load(InputStream input) throws IOException
|- 從XML文件中讀取:public void loadFromXML(InputStream input) throws IOException 將內容保存成普通文件: 將內容保存為XML文件: 從XML文件中把屬性讀取出來 (16)Map重要補充 以上的程序可以通過key找到value。
現在把代碼反過來 代碼反過來之后,發現沒有得到真正想要的內容,而是返回了null。
此時如果要通過匿名對象來當作key,找到屬性的話,就必須牽扯到Object中的幾個方法:
· 對象比較:
· 通過hashCode; Java中是通過equals和hashCode方法去確認對象唯一性,可以進行比較。
但是以上的程序需要一點更改,因為不能讓所有對象的hashCode方法的返回值都是一樣的,所以可以經過一些自己簡單的運算。 一個完整的類最好覆寫Object類中的三個方法:
· hashCode
· equals
· toString (17)額外補充(對象克隆) 就是把對象的內容重新復制一份,復制出一個新的對象
protected Object clone() throws CloneNotSupportedException 克隆方法是一個受保護的方法。所以在其需要對象被克隆的子類中必須擴大權限,否則外部無法看見。
對象所在的類必須實現Cloneable接口 Java程序中常用的有兩大標識接口:
· 可序列化:Serializable
· 可克隆:Cloneable 總結 就是向里面不斷加入元素,可以動態的擴充,而且可以有存放單值的,也可以有存放一對值的。
而且在集合中對于排序,使用的是Comparable接口。
實例的模型很重要 —— Hibernate、EJB 3.0。 ######################Michael分割線#############################
總結
以上是生活随笔為你收集整理的[零基础学JAVA]Java SE应用部分-35.JAVA类集之四的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IT人员必看的几个网站 http://g
- 下一篇: 我喜欢这样的老大[10-24]