jaVa中多对多关系的代码问题

来源:百度知道 编辑:UC知道 时间:2024/06/01 00:18:14
两个类Hobby和Person,多对多的关系,代码如下:
package association;
import java.util.*;
public class Hobby {
/*Hobby类的属性hobbyname,一个vector型的persons*/
private String hobbyname;
private Vector persons=new Vector();
/*构造函数*/
public Hobby(String hobbyname,Person person){
this.hobbyname=hobbyname;
persons.add(person);
person.addHobby(hobbyname);
}
/*得到hobbyname*/
public String getHobbyname(){
return hobbyname;
}
/*一个hobby可以有多个person,添加person的方法*/
public void addPerson(String personname,int age){
persons.add(new Person(personname,age));
}
/*输出hobbyname,并将有hobbyname的人名全部输出*/
public String toString(){
String s="hobbyname:"+hobbyname+"\n";
s+=" persons:";
Object[] o=persons.toArray();
Person[] p=new Person[o.length];
for(int i=0;i<p.length;i++){
p[i]=(Person)o[i];
s+=

你在Hobby和Person之间徘徊,造成一个死循环了,我觉你不应该是这样映射,这样会好麻烦的
package association;

import java.util.*;

public class Hobby {
/* Hobby类的属性hobbyname,一个vector型的persons */
private String hobbyname;
private Vector persons = new Vector();

/* 构造函数 */
public Hobby(String hobbyname, Person person) {
this.hobbyname = hobbyname;
persons.add(person);
/**
* 一个业余爱好可以对应多个人,但只对应一次
*/
if (!persons.contains(person))
person.addHobby(hobbyname);
}

/* 得到hobbyname */
public String getHobbyname() {
return hobbyname;
}

/* 一个hobby可以有多个person,添加person的方法 */
public void addPerson(String personname, int age) {
persons.add(new Person(personname, age));
}

/* 输出hobbyname,并将有hobbyname的人名全部输出 */
public String toString() {
String s = "hobbyname:" + hobbyname + "\n";
s += " persons:";