簡體   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