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