Hashtable和HashMap类有三个重要的不同之处。第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。
http://www.fawcette.com/china/XmlFile.aspx?ID=8&page=1
HashMap hm = new HashMap();
hm.put(key, value);
Object getValue = hm.get(key);具体用法和其它方法见Javadoc。Hashtable是Java 1中提供的容器,而HashMap是Java 2的容器,作用上没有什么区别都是一个Hash表。选择嘛!我是喜新厌旧的。:)
import java.util.*;/**
This program demonstrates the use of a map with key type
String and value type Employee.
*/
public class MapTest
{
public static void main(String[] args)
{
Map staff = new LinkedHashMap(101,0.75F,true);
staff.put("144-25-5464", new Employee("Angela Hung"));
staff.put("567-24-2546", new Employee("Harry Hacker"));
staff.put("157-62-7935", new Employee("Gary Cooper"));
staff.put("456-62-5527", new Employee("Francesca Cruz")); // print all entries System.out.println(staff); // remove an entry staff.remove("567-24-2546"); // replace an entry staff.put("456-62-5527", new Employee("Francesca Miller")); // look up a value System.out.println(staff.get("157-62-7935")); // iterate through all entries Set entries = staff.entrySet();
Iterator iter = entries.iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry)iter.next();
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println("key=" + key + ", value=" + value);
}
}
}/**
A minimalist employee class for testing purposes.
*/
class Employee
{
/**
Constructs an employee with $0 salary.
@param n the employee name
*/
public Employee(String n)
{
name = n;
salary = 0;
} public String toString()
{
return "[name=" + name + ", salary=" + salary + "]";
} /**
Sets the employee salary to a new value.
@param s the new salary.
*/
public void setSalary(double s)
{
salary = s;
} private String name;
private double salary;
}
表单中也是一些name和value对啊