簡體   English   中英

從另一個類調用對象arraylist並遍歷它

[英]Calling an object arraylist from another class and iteration through it

訪問類中創建的數組列表時遇到問題。 我嘗試通過類似我的問題的答案,但是不幸的是我無法解決問題。

所以我有兩個類StudentPerson ,我想遍歷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對象時,對象pname將為null, list將為空。 因此,因為列表為空,所以永遠不會執行for循環,因此它返回false。

如果您要運行代碼,則不應創建Person對象,然后立即對其進行迭代,因為它將沒有任何內容。 您必須在其中添加某些內容,或者使用您認為將在運行isHere(..)方法之前填充的Person對象isHere(..)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM