繁体   English   中英

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

[英]Is this correct usage of a hashtable in Java

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");
      }

}

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

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

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

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

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

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

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

  • 更喜欢声明您使用的集合的接口而不是实现 - 它使代码更改更容易并使您的 API 更健壮。
  • 使用泛型 - 它使代码类型安全且易于阅读。 例如Map<String, Integer> cityRatings = new Hashtable<String, Integer>();
 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");
  }

}

Hashtable 以错误的方式声明。 我所做的更改现在必须起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM