这是Java中哈希表的正确用法吗?

时间:2011-04-23 16:44:02

标签: java hashtable

package datastrcutures;
import java.util.*;

public class java_hashtable {
      public static void ratingofcity() {
           Hashtable CityRating = new Hashtable();
           CityRating.put("New York", "8");
           CityRating.put("Sandton", "9");
      }

}

3 个答案:

答案 0 :(得分:2)

我认为你有一个拼写错误,你的对象类型必须是Hashtable而不是Hasttable你应该使用Java Generics

像这样实例化哈希表对象:

Hashtable<String, String> cityRating = new Hashtable<String, String>();

作为Java命名约定,我建议您的对象名称以小写字母开头。

答案 1 :(得分:2)

问题Is this correct usage of a hashtable非常主观。 Map用于存储键组和值,如示例中所示。 但是 - 您应该在设计中考虑的事项:

  • 我是否需要我的地图是线程安全的?如果没有,请使用 HashMap
  • 您对两个城市的评分是否相同?如果没有,也许阵列会更好?
  • 如果上述问题的答案是“” - 您是否需要获得所有评分相同的城市?在这种情况下,您可能需要提出另一个数据结构,或者只是维护两个地图(城市 - &gt;评级之一和评级 - &gt;城市之一)
  • 评分为好String - 你不想选择Integer,以便比较它们吗?

此外,一些与此问题的“设计”无关的注释:

  • 首选声明您使用的集合的界面而不是实现 - 它使代码更改更容易,并使您的API更强大。
  • 使用泛型 - 它使代码类型更安全,更易于阅读。例如Map<String, Integer> cityRatings = new Hashtable<String, Integer>();

答案 2 :(得分:0)

 import java.util.*;

public class java_hashtable {
  public static void ratingofcity() {
       Hashtable<String, String> cityRating = new Hashtable<String, String>();
       CityRating.put("New York", "8");
       CityRating.put("Sandton", "9");
  }

}

哈希表的声明方式错误。我所做的更改必须立即生效。