访问我在课堂上创建的arraylist时遇到问题。我尝试了类似于我的问题的答案,但不幸的是我无法解决问题。
所以我有两个课程Student
和Person
,我希望在课程Person
中遍历Student
的arraylist。 (我知道,代码真的没有意义。我只是想了解。)
我尝试了两种方法:
1)在Student类中创建Person类型的变量,并从person类调用get方法。
2)在返回arraylist的类人员中创建一个get方法。 当我试图在main方法中调用isHere方法时,两者都无法正常工作。(false是打印而不是true)
我认为我的两种方法初始化一个类型为Person的新数组,而不是调用已经添加了元素的arraylist。怎么解决这个问题?
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));
}
}
答案 0 :(得分:1)
p = new Person()
方法中的语句isHere(..)
正在创建一个新的Person
对象。创建Person对象后,对象name
中的p
将为空,list
将为空。所以for循环永远不会执行,因为列表是空的,因此它返回false。
如果您希望运行代码,则不应创建Person对象,然后立即迭代它,因为它没有任何内容。您必须向其添加内容或使用您认为将在运行isHere(..)
方法之前填充的Person对象