2014-10-26 59 views
0

我想訪問哈希表中的值,但在我的代碼中有一個例外。我想的(鍵,值)內訪問另一個類的構造函數值在hastable這是我的課如何訪問HashTable中的值

public class StudentReg { 
    public String RegNo,Program ,FName; 

    StudentReg(int Roll , String Program, String FName) 
    { 
     this.RegNo = " Fall2k14_ " + Roll + " " + Program; 
     this.FName = FName; 
     this.Program = Program; 

    } 

的代碼,現在我我已經使用中,我要訪問的值的哈希表使用迭代器hastable的,這是我的主類的代碼,我創建了一個對象的哈希表T和輸入鍵和設置的值,並得到了迭代

public static void main(String[] args){ 
    Hashtable T = new Hashtable(); 

    T.put("Ahmed", new StudentReg(123,"BS(CS)","Murtaza")); 
    T.put("Fahad", new StudentReg(456,"BE(EE)","....")); 
    T.put("Alan", new StudentReg(769,"BBA","Rashee")); 
    Set set =T.keySet(); // get set-view of keys 
       // get iterator 
    Iterator itr = set.iterator(); 
    while(itr.hasNext()) { 
     StudentReg S3 = (StudentReg) itr.next(); 
     System.out.println(S3 + ": " +T.get(S3.RegNo+""+S3.Program+""+S3.FName)); 

} 

值此時的System.out .println(S3 +「:」+ T.get(S3.RegNo +「」+ S3.Program +「」+ S3.FName));我想訪問在StudentReg()的構造函數中傳遞的值; 但我無法做到這一點

+0

使用Bare Collections的任何一點?添加,以便避免必須投射迭代器。 – 2014-10-26 21:17:44

+0

你收到什麼樣的例外?將異常消息粘貼到您的問題中。 – 2014-10-26 21:18:11

+0

java.lang.ClassCastException – 2014-10-26 21:18:50

回答

1

你正在迭代你的鍵是字符串。如果您想遍歷StudentReg類的所有對象,則需要在values()上進行迭代。

我強烈建議將類型參數添加到集合中。這樣你的代碼就不會編譯,你馬上就會看到問題所在。

Hashtable<String, StudentReg> T 
    = new Hashtable<String, StudentReg>(); 

,或者使用Java 7或更高版本

Hashtable<String, StudentReg> T = new Hashtable<>(); 

然後你就可以使用foreach結構上values()迭代。

for (StudentReg s : T.values()) { 
    System.out.println(T.RegNo + " " + T.Program + " " + T.FName)); 
} 
+0

Lewandoski它不工作,我已經嘗試了兩個。它顯示相同的例外 – 2014-10-26 21:28:22

+0

你是否已經刪除了演員陣容?你不再需要它了。 – 2014-10-26 21:30:44

+0

可以做一個禮物,我會非常感謝你 – 2014-10-26 21:34:11

0

您試圖投字符串...密鑰集如果你想鍵返回所有的鑰匙,沒有價值...... 和值,你可以這樣做:

public static void main(String[] args) { 
    Hashtable<String, String> hashtable = new Hashtable<String, String>(); 
    hashtable.put("a", "1"); 
    hashtable.put("b", "2"); 
    for (Entry<String, String> tuple : hashtable.entrySet()) { 
     System.out.println(tuple.getKey(), tuple.getValue()); 
    } 
} 
+0

@ henriquedg89我想用密鑰來訪問值 – 2014-10-26 21:23:46

+0

但兄弟我想訪問的價值與構造函數 – 2014-10-26 21:25:22

+0

的幫助下,你有兩個,值和密鑰 – 2014-10-26 21:28:40