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

时间:2016-05-03 10:31:45

标签: java class set instances

任何人都可以帮我解决这个java代码吗? 我有两个类,需要创建一个 set ,可以存储另一个类的实例。这是我设法的样本" commit" :)
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;

现在这个方法应该创建一个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); 

}

4 个答案:

答案 0 :(得分:1)

您需要更改您的设置声明:

private Set<Rabbit> setOfRabbits;

并且您还需要对这两个方法进行操作,以便永远不会在集合中插入两次相同的对象。

@Override
public int hashCode() {
    // Your own implementation 
    return ...;
}

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

答案 1 :(得分:0)

说:

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

setOfRabbits.add(new Rabbit());

当Set将跟踪未知数量的对象时,我通常会尝试使用未命名的实例进行实例化。这对于添加到监听器非常有用,因此您可以在每次用户单击时添加新的Rabbit。

通过这种方式,您可以添加许多您想要的Rabbit对象。尝试:

for(i = 0; i < 10; i++) {
    setOfRabbits.add(new Rabbit());
}

您可能会在旧版本的Java中看到这一点:

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

但不再需要

答案 2 :(得分:0)

你的ManyRabbits calss应该是这样的

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

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

}

答案 3 :(得分:0)

public class Rabbit { 

  private String age; 

  //constructor for instance of Rabbit   
  public Rabbit(String rabAge) {
    super();
    this.age = rabAge;
  }

  // more methods if necessary
}

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
}

通过调用类似

的方式使用它
ManyRabbits manyRabbits = new ManyRabbits();
manyRabbits.addRabbit("10");
manyRabbits.addRabbit("20");
manyRabbits.addRabbit("30");