为什么我不能将对象添加到HashSet

时间:2014-12-01 22:37:11

标签: java hashset bluej

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

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

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


}

1 个答案:

答案 0 :(得分: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)会更合乎逻辑吗?