2

根据类的java文档Hashtable

This example creates a hashtable of numbers. It uses the names of the numbers as keys:

   Hashtable<String, Integer> numbers
     = new Hashtable<String, Integer>();
   numbers.put("one", 1);
   numbers.put("two", 2);
   numbers.put("three", 3);

To retrieve a number, use the following code:

   Integer n = numbers.get("two");
   if (n != null) {
     System.out.println("two = " + n);
   }

if (n != null) {当 Hashtable 不允许键和值中的空值时,为什么在上述代码中的 get() 操作期间使用它 ?

如果它是为 HashMap 编写的,那么它就可以了,因为 HashMap 允许键和值中的空值,但为什么将它用于 Hashtable?

4

4 回答 4

5

这只是一个好习惯,因为如果指定的键在 Hashtable 中不存在,该get()方法将返回。 在上面的代码示例中,我们可以省略它,因为我们知道密钥就在那里,但在现实生活中的应用程序中通常并非如此。null
"two"

于 2012-07-23T12:25:38.690 回答
3

如果键不存在于地图/表中,则 get 返回 null。

于 2012-07-23T12:26:16.903 回答
3

你可以写

if (number.containsKey("two")) {
    Integer n = numbers.get("two");
    System.out.println("two = " + n);
}

虽然这更清楚,但它有两个问题。

  1. 它比较慢,因为它访问地图两次。
  2. 如果集合在另一个线程中更新,则它具有潜在的竞争条件。

鉴于已选择线程安全 Hashtable,性能似乎不如线程安全重要,因此第二个原因更有可能。

于 2012-07-23T12:42:34.173 回答
1

如果指定的键不存在,get 返回 Null 作为值

于 2012-07-23T12:32:21.287 回答