Java-能够引用不同类的实例的集合
有人能帮我处理这个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; }
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 ...;
}