2014-12-01 97 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

相关问题