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