为什么我不能向 HashSet 添加对象

0 java hashset bluej

我正在尝试使用 Penny 对象在构造函数中填充 HashSet,但我不确定如何执行此操作。我已经写了这个,但我不断收到错误消息。

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

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


}
Run Code Online (Sandbox Code Playgroud)

Hov*_*els 5

您不是向集合中添加对象,而是尝试添加类型,这将不起作用,甚至无法编译。代替

penniesSet.add(Penny);
Run Code Online (Sandbox Code Playgroud)

尝试

// assuming Penny has a default constructor
penniesSet.add(new Penny());
Run Code Online (Sandbox Code Playgroud)

还,

  • 使用 for 循环而不是 while 循环添加到集合中,因为您在开始循环之前就知道要循环多少次。
  • 您确定要使用 HashSet 来存放硬币吗?当您希望集合中没有重复项时,将使用 HashSets,但一个 Penny 不等于另一个 Penny 吗?换句话说,这不应该总是正确的:pennyA.equals(pennyB). 当然,这取决于你如何定义equals(...)hashCode()为你的 Penny 类定义。
  • 诸如 ArrayList 之类的不同集合是否更合乎逻辑?