[英]Calling an object arraylist from another class and iteration through it
訪問類中創建的數組列表時遇到問題。 我嘗試通過類似我的問題的答案,但是不幸的是我無法解決問題。
所以我有兩個類Student
和Person
,我想遍歷Student
類中Person
的數組列表。 (我知道代碼沒有什么意義。我只想了解)。
我嘗試了兩種方法:
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));
}
}
isHere(..)
方法中的語句p = new Person()
正在創建新的Person
對象。 創建該Person對象時,對象p
的name
將為null, list
將為空。 因此,因為列表為空,所以永遠不會執行for循環,因此它返回false。
如果您要運行代碼,則不應創建Person對象,然后立即對其進行迭代,因為它將沒有任何內容。 您必須在其中添加某些內容,或者使用您認為將在運行isHere(..)
方法之前填充的Person對象isHere(..)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.