Java 为什么可以';我向哈希集中添加一个对象

Java 为什么可以';我向哈希集中添加一个对象,java,hashset,bluej,Java,Hashset,Bluej,我试图用Penny对象填充构造函数中的HashSet,但我不确定如何做到这一点。我已经写了这篇文章,但我一直收到错误消息 public Pocket(int numOfPennies){ HashSet penniesSet = new HashSet<Penny>(); while( penniesSet.size() <= numOfPennies){ penniesSet.add(Penny); } 公共口袋(整数便士){ Hash

我试图用Penny对象填充构造函数中的HashSet,但我不确定如何做到这一点。我已经写了这篇文章,但我一直收到错误消息

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

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


}
公共口袋(整数便士){
HashSet penniesSet=新HashSet();

while(pennieset.size()您不是在向集合中添加对象,而是在尝试添加类型,这将不起作用,甚至无法编译。而不是

penniesSet.add(Penny);
试一试

而且

  • 使用for循环而不是while循环添加到集合中,因为在开始循环之前,您知道要循环多少次
  • 您确定要使用哈希集来保存您的硬币吗?当您希望收藏中没有重复的硬币时,可以使用哈希集,但一便士不等于另一便士吗?换句话说,这不应该总是正确的:
    pennyA.equals(pennyB)
    。当然这取决于您如何定义
    equals(…)
    hashCode()
    用于您的Penny类
  • 其他集合(如ArrayList)是否更符合逻辑

您没有向集合中添加对象,而是尝试添加类型,这将无法工作,甚至无法编译。而不是

penniesSet.add(Penny);
试一试

而且

  • 使用for循环而不是while循环添加到集合中,因为在开始循环之前,您知道要循环多少次
  • 您确定要使用哈希集来保存您的硬币吗?当您希望收藏中没有重复的硬币时,可以使用哈希集,但一便士不等于另一便士吗?换句话说,这不应该总是正确的:
    pennyA.equals(pennyB)
    。当然这取决于您如何定义
    equals(…)
    hashCode()
    用于您的Penny类
  • 其他集合(如ArrayList)是否更符合逻辑

谢谢你的回答,我会使用其他东西,但我必须使用哈希集,因为这是我被指派要做的。对不起,如果我的问题有点垃圾,我对编码和这个网站非常陌生,所以我不太了解规则等等……也许每一分钱都会有一个序列号?谢谢你的回答,我会使用其他东西,但是我必须使用一个哈希集,因为这是我被指派去做的。对不起,如果我的问题有点垃圾,我对编码和这个网站很陌生,所以我不太了解规则等等……也许每一分钱都会有一个序列号?除了下面提到的问题之外,你正在使用原始类型声明你的哈希集。正确的形式是
HashSet penniesSet=new HashSet()
,尽管在Java 7中,您可以避免在后一种情况下重复
Penny
HashSet penniesSet=new HashSet()
(实际上,
Set penniesSet=new HashSet()
更好,以防您以后决定切换到
TreeSet
)除了下面提到的问题之外,您正在使用原始类型声明您的集合。正确的形式是
HashSet penniesSet=new HashSet()
,尽管在Java 7中,您可以避免在后一种情况下重复
penniesSet
HashSet penniesSet=new HashSet()
(实际上,
set penniesSet=new HashSet())
甚至更好,以防您以后决定切换到
TreeSet