gpt4 book ai didi

java - 从另一个类调用对象数组列表并迭代它

转载 作者:行者123 更新时间:2023-12-01 08:53:29 25 4
gpt4 key购买 nike

我在访问我在类中创建的数组列表时遇到问题。我尝试查看与我类似的问题的答案,但不幸的是我无法解决问题。

所以我有两个类 StudentPerson,我想迭代 Student< 类中 Person 的数组列表。 (我知道,代码并没有什么意义。我只是想理解)。

我尝试了两种方法:

1)在Student类中创建一个Person类型的变量,并调用person类中的get方法。

2) 在 person 类中创建返回 arraylist 的 get 方法。当我尝试在 main 方法中调用 isHere 方法时,两者都无法正常工作。(打印的是 false 而不是 true)

我认为我的两种方法初始化了一个 Person 类型的新数组,而不是调用已添加元素的数组列表。如何解决这个问题?

import java.util.ArrayList;

public class Student {
private Person p;
private String name;
private int age;
private String address;

public Student() {

}

public Student(String name, int age, String address) {
this.name = name;
this.age = age;
this.address = address;
}

public boolean isHere(String name) {
p = new Person();
// I also tried for(Person per : p.getList)
for (Person per : this.getL()) {
if (per.getName().equals(name)) {
System.out.println("hi");
return true;
}
}
return false;
}

public ArrayList<Person> getL() {
return p.getList();
}

public Person getP() {
return p;
}

public void setP(Person p) {
this.p = p;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

}

Person 类:

import java.util.ArrayList;

public class Person {
private String name;
private ArrayList<Person> list = new ArrayList<Person>();

Person() {

}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public ArrayList<Person> getList() {
return list;
}

public void setList(ArrayList<Person> list) {
this.list = list;
}

public void add(String name) {
list.add(new Person(name));
}
}

最佳答案

isHere(..) 方法中的语句 p = new Person() 正在创建一个新的 Person 对象。创建该 Person 对象时,对象 p 中的 name 将为 null,并且 list 将为空。因此 for 循环永远不会执行,因为列表为空,因此它返回 false。

如果您希望代码运行,则不应创建 Person 对象,然后立即迭代它,因为它将没有任何内容。您必须向其中添加一些内容,或者使用您认为在运行 isHere(..) 方法之前会填充的 Person 对象

关于java - 从另一个类调用对象数组列表并迭代它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42214460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com