2011-04-23 111 views
0
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"); 
     } 

} 
+0

你真的想用這段代碼做什麼?值(「8」,「9」)是唯一的嗎? – 2011-04-23 16:57:23

+0

超出常規變量名稱應該是cityRating而不是CityRating。 – 2011-04-23 16:58:03

+0

你可能會考慮將包重命名爲'datastructures'。 – 2011-04-23 20:29:16

回答

2

我認爲你有一個錯字有這個正確的使用,你的對象類型必須是Hashtable而不是Hasttable你應該使用Java Generics

實例化哈希表對象是這樣的:

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

而作爲Java命名約定,我建議讓您的對象名稱以小寫字母開頭。

+1

然後看看HashMap。請參閱http://stackoverflow.com/questions/40471/java-hashmap-vs-hashtable – Axel 2011-04-23 16:49:38

2

問題Is this correct usage of a hashtable是非常主觀的。 A Map用於存儲您的示例中的鍵和值組。 但是 - 在你的設計中你應該考慮的事情:

  • 我需要我的地圖是線程安全的嗎?如果沒有,請使用HashMap
  • 您是否對這兩個城市有同樣的評價?如果沒有,也許陣列會更好?
  • 如果上述問題的答案是「」 - 您是否需要獲得所有具有相同評分的城市?在這種情況下,你可能需要拿出另一種數據結構,或者簡單地維持兩個地圖(城市之一 - >評級評級的一個 - >市
  • 是評級與作爲一個String OK - 你不喜歡Integer,所以你可以比較它們嗎?

而且,不涉及這一問題的「設計」的幾個注意事項:

  • 不想宣佈收藏您使用,而不是執行的接口 - 它使代碼更改更加容易和使您的API更強大。
  • 使用泛型 - 它使代碼類型更安全,更易於閱讀。例如Map<String, Integer> cityRatings = new Hashtable<String, Integer>();