初學Java,Hashtable,HashMap,LinkedHashMap和Properties

Hashtable,呵呵,這個類的命名有問題啊,table的T沒有大寫,而C#中就是HashTable,這個類很"老",在JDK1.0就出現了,可能當時並沒有人發現它的命名問題,待到後來已經牽涉到太多的其它類,此時已經無法輕易的修改它的名字了,也就這麼着了,屬於歷史遺留問題.

Hashtable與HashMap這兩個類似乎很像,但還是有區別的 ,Hashtable是一個線程安全的Map實現,但HashMap不是,所以HashMap的性能會高一些,如果多個線程訪問同一個Map對象時,使用Hashtable會更好.

Hashtable不允許使用null作爲Key和Vaule,試圖把null放入Hashtable會得到NullPointerException異常,但HashMap可以使用null作爲Key或Vaule

LinkedHashMap是HashMap的子類,也使用了雙向鏈表來維護Key-Value次序,次序與插入元素的次序一致

Properties是Hashtable類的子類,在處理屬性文件時特別方便(如windows平臺的ini文件),Properties類可以把Map對象和屬性文件關聯起來,把Map對象中的key-value對寫入屬性文件,也可以把屬性文件中的 "屬性名 = 屬性值"加載到Map對象中。Properties的key和value都只能是字符串類型


import java.util.*;  
import java.io.*;  
public class TestProperties   
{  
    public static void main(String[] args) throws Exception  
    {  
        Properties props = new Properties();  
        //向Properties中增加屬性  
        props.setProperty("username","yeeku");  
        props.setProperty("password","123456");  
        //將Properties中的屬性保存到a.ini文件中  
        props.store(new FileOutputStream("a.ini"),"comment line");  
        //新建一個Properties對象  
        Properties props2 = new Properties();  
        //向Properties中增加屬性  
        props2.setProperty("gender","male");  
        //將a.ini文件中的屬性名-屬性值追加到props2中  
        props2.load(new FileInputStream("a.ini"));  
        System.out.println(props2);  
    }  
}  

打印出的文字爲:

{password=123456,gender=male,username=yeeku}

a.ini 文件內容如下:

#comment line
#Wed Feb 22 22:17:41 CST 2012
password=123456
username=yeeku


發佈了31 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章