Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-能够引用不同类的实例的集合_Java_Class_Set_Instances - Fatal编程技术网

Java-能够引用不同类的实例的集合

Java-能够引用不同类的实例的集合,java,class,set,instances,Java,Class,Set,Instances,有人能帮我处理这个java代码吗? 我有两个类,需要创建一个集,它可以存储另一个类的实例。以下是我设法“提交”的示例: A类 public Class Rabbit { private String age; //constructor for instance of Rabbit <br> public Rabbit(String rabAge) { super(); this.age = rabAge; }

有人能帮我处理这个java代码吗? 我有两个类,需要创建一个,它可以存储另一个类的实例。以下是我设法“提交”的示例:
A类

public Class Rabbit { 

    private String age; 

    //constructor for instance of Rabbit <br>
    public Rabbit(String rabAge) {
        super();
        this.age = rabAge;
    }
公共类兔子{
私弦时代;
//兔子实例的构造函数
公兔(弦兔){ 超级(); 这个年龄=拉巴奇; }
现在B类:

public class ManyRabbits {
private Set <String>  setOfRabbits;
公共类manyrabbit{
私有集合rabbits;
现在,这个方法应该创建一个新的Rabbit实例,并将其添加到由变量setOfRabbits表示的集合中

public void addRabbit (String age)` {

    //and I don't know what should go next...something like: `
    Rabbit r1 = new Rabbit("10");` <br>
    setOfRabbits.add(r1); 

}
public void addRabbit(字符串年龄)`{
//我不知道下一步该怎么做……比如:`
兔子r1=新兔子(“10”);`
setOfRabbits.add(r1); }
说:

Set setOfRabbits=new HashSet();
添加(newrabbit());
当集合将跟踪未知数量的对象时,我通常尝试使用一个未命名的实例进行实例化。这对于添加到侦听器非常有用,这样您就可以(比如)在用户每次单击时添加一个新的兔子

通过这种方式,您可以添加任意数量的兔子对象。请尝试:

for(i = 0; i < 10; i++) {
    setOfRabbits.add(new Rabbit());
}
(i=0;i<10;i++)的
{
添加(newrabbit());
}
您可以在旧版本的Java中看到这一点:

Set<Rabbit> setOfRabbits = new HashSet<Rabbit>();
Set setOfRabbits=new HashSet();

但是它不再是必要的

你的
ManyRabbits
cals应该是这样的

public class ManyRabbits
{
    private Set<Rabbit>  setOfRabbits = new HashSet<Rabbit>();

    public void addRabbit (String age) 
    { 
       Rabbit r1 = new Rabbit(age); 
       setOfRabbits.add(r1);
    }

}
公共类manyrabbit
{
私有集setOfRabbits=新HashSet();
公共void addRabbit(字符串年龄)
{ 
兔子r1=新兔子(年龄);
setOfRabbits.add(r1);
}
}
ManyRabbits
中:

public class ManyRabbits {
  private Set <Rabbit> setOfRabbits = new HashSet<>();

  public void addRabbit (String age) { 
    Rabbit r1 = new Rabbit(age); 
    setOfRabbits.add(r1);
  }

  // more methods if necessary
}

您需要更改设置的脱格:

private Set<Rabbit> setOfRabbits;

它应该设置而不是设置,并且您还需要覆盖
Rabbit
中的
equals
hashCode
(除非您希望通过标识完成重复数据消除)。建议这些
hashCode
equals
的实现是有误导性的,因为这个类的行为将与您没有重写这些方法的行为相同。请建议有用的实现。但是OP想要的是
,而不是
列表
。非常感谢大家。当我使用addRabbit并创建Rabbit r1时,一切正常但是,如果我想创建另一个兔子,它会覆盖第一个吗?我需要能够向集合中添加更多兔子。
public class ManyRabbits {
  private Set <Rabbit> setOfRabbits = new HashSet<>();

  public void addRabbit (String age) { 
    Rabbit r1 = new Rabbit(age); 
    setOfRabbits.add(r1);
  }

  // more methods if necessary
}
ManyRabbits manyRabbits = new ManyRabbits();
manyRabbits.addRabbit("10");
manyRabbits.addRabbit("20");
manyRabbits.addRabbit("30");
private Set<Rabbit> setOfRabbits;
@Override
public int hashCode() {
    // Your own implementation 
    return ...;
}

@Override
public boolean equals(Object o) {
    // Your own implementation 
    return ...;
}