sách gpt4 ai đã đi

java - 如何在对象之间建立链接/关系?

In lại 作者:行者123 更新时间:2023-12-04 01:02:37 30 4
mua khóa gpt4 Nike

public class MainClass {
ArrayList mans = new ArrayList();
// I'm filling in this arraylist, but I'm not writing those parts because I want to summarize the
//code.
}

public class Man {
int index_father, index_son;
Tên chuỗi;
public Man(String name){
this.name = name;
}
}

这个男人社区中的一些人有父子关系。我的问题是:
我正在寻找一种更简洁的方式来建立这种父子关系。

我尝试用整数建立这种关系(例如:which_father 显示该男子的父亲在“男子”列表中所在的目录)但这有一些缺点:
1-创建对象时,我总是必须在父亲之后创建儿子。因为:

private void createMan() {
Man man = new Man("Ethan");
man.index_father = 4;
mans.add(man);
mans.get(4).index_son = mans.indexOf(man);
}

如果我们还没有创造出父亲,那么人类的第四个元素就不会被创造出来。
2- 如果我从 mans arraylist 中删除一个元素,which_fathers 将不会显示正确的父亲 man。

我可能对 Java 了解不够,但一定有一种简单的方法可以在对象之间建立联系(比如本例中的父子关系),对吧?

1 Câu trả lời

您可以添加 Listhiện hữuMan中代表儿子类:

public class Man {
Tên chuỗi;
List sons = new ArrayList<>();

public Man(String name){
this.name = name;
}
}

biên tập:

我认为 OOP 可以帮助简化事情:

public class Person {
Sex sex;
Tên chuỗi;
List children = new ArrayList<>();
Person partner; // husband/wife

public Person(String name, Sex sex){
this.name = name;
this.sex = sex;
}

public void marryTo(Person person){
this.partner = person;
person.setPartner(person);
}

public void setChildFromMarriage(Person child){
children.add(child);
partner.getChildren().add(child);
}

public enum Sex {
MAN, WOMAN
}
}

你可以保留一个List .

cách sử dụng:

List people = Arrays.asList(
new Person("Jordan", Person.Sex.MAN),
new Person("Tim", Person.Sex.MAN),
new Person("Sarah", Person.Sex.WOMAN)
);

// Let's marry Jordan to Sarah
Person jordan = getPersonByName(people, "Jordan");
Person sarah = getPersonByName(people, "Sarah");
jordan.marryTo(sarah);

Person child = new Person("Jordan Jr", Person.Sex.MAN);
// We can add the child to people list if we want
jordan.setChildFromMarriage(child);

// Let's change their child name using Sarah's reference.
getPersonByName(sarah.getChildren(), "Jordan Jr").setName("Bob");

System.out.println(child.getName()); // Bob

private static Person getPersonByName(List people, String name) {
return people.stream()
.filter(person -> person.getName().equals(name))
.findFirst()
.get();
}

Đầu ra:

Bob

关于java - 如何在对象之间建立链接/关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67742353/

30 4 0
Bài viết được đề xuất: amazon-web-services - 更改 EC2 Linux 实例中的时区
Bài viết được đề xuất: flutter - 类型 'ExpandIterable' 不是类型 'Iterable' 的 'iterable' 的子类型
Bài viết được đề xuất: java - 如何让2个动画连续运行
Bài viết được đề xuất: python维基百科包改变输入
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com