2014-12-01 107 views
0

我試圖填充與竹篙對象構造一個HashSet,但我真的不知道如何做到這一點。我寫了這個,但我不斷收到錯誤消息。爲什麼我不能一個對象添加到HashSet

public Pocket(int numOfPennies){ 
    HashSet penniesSet = new HashSet<Penny>(); 

    while(penniesSet.size() <= numOfPennies){ 
     penniesSet.add(Penny); 


} 
+0

另外的問題下文提到的,您使用的是原始類型聲明你設定的。正確的形式是'HashSet penniesSet = new HashSet ()',儘管對於Java 7,您可以避免在後一種情況下重複'Penny':HashSet penniesSet = new HashSet <>()'。 – 2014-12-01 23:11:20

+0

(實際上,'設置 penniesSet = new HashSet <>()'會更好,如果您稍後決定切換到'TreeSet') – 2014-12-01 23:12:20

回答

4

你沒有添加對象的集合,而是試圖增加一個類型,這將無法工作,甚至不能編譯。取而代之的

penniesSet.add(Penny); 

嘗試

// assuming Penny has a default constructor 
penniesSet.add(new Penny()); 

此外,

  • 添加到收藏使用for循環,而不是一個while循環,因爲你知道在啓動多少次循環前你想循環。
  • 您確定要使用HashSet來保存您的便士嗎?當你想在你的收藏中沒有重複時,使用HashSets,但是不會有一個Penny與另一個Penny相同?換句話說,這不應該總是如此:pennyA.equals(pennyB)。當然,這取決於你如何爲你的Penny類定義equals(...)hashCode()
  • 像ArrayList的不同集合會更合乎邏輯嗎?
+0

感謝您的回答,我會使用其他的東西,但我必須使用一個哈希集,因爲這是我被分配去做的事情。對不起,如果我的問題是有點垃圾我是相當新的編碼和這個網站,所以我不完全掌握規則等...... – 2014-12-01 23:05:14

+0

也許每個竹is將有一個序列號? – 2014-12-01 23:09:40

相關問題