簡體   English   中英

如何創建一個返回ArrayList的方法

[英]How to create a method that returns an ArrayList

通過閱讀教程和練習Java,我遇到了一個問題。 我創建了一個String ArrayList,向其中添加了字符串。 但是我想要一個方法允許我向此arrayList添加更多字符串,而另一個方法允許我顯示此arrayList。 以下是我解決這個問題的嘗試。 我的代碼只打印一個空的數組列表

class apples {
    public static void main(String[] args) {
        viewArrayList(); //prints a empty arraylist
    }

    public static void addString() {
        ArrayList<String> destinationArray = new ArrayList<String>();
        destinationArray.add("example1");
        destinationArray.add("example2");
    }

    static ArrayList GetArrayList() {
        ArrayList<String> destinationArray = new ArrayList<String>();

        return destinationArray;
    }

    public static void viewArrayList() {
        System.out.println(GetArrayList());
    }
}

創建一個ArrayList的對象,並將引用傳遞給不同的方法。 示例在主類中創建一個ArrayList對象,並將其傳遞給addStringdisplay方法。

public static void main(String[] args){
    List<String> destinationArray = new ArrayList<String>();
    viewArrayList(destinationArray); 
    displayArrayList(destinationArray);//prints a empty arraylist
}
public static void addString(List destinationArray ){   
    destinationArray.add("example1");
    destinationArray.add("example2");
}
...

您是否忘了將addString()添加到getArrayList()?

您的變量destinationArray是在方法中聲明的,它意味着它僅存在於addString()之外的該方法內部,該對象不再存在,並且您無法在其他方法中訪問它。 為此,您必須將其聲明為這樣的類變量:

class apples{
ArrayList<String> destinationArray = new ArrayList<String>();
public static void main(String[] args) 

實際上,在執行程序時,它會執行main方法,因此,如果要執行方法addString() ,則必須在main函數中調用它。 它看起來像這樣:

public static void main(String[] args) 
{
    this.addString();
    this.viewArrayList(); //prints a empty arraylist
}

我會做這樣的事情:

class apples
{
  private ArrayList<String> array = new ArrayList<String>();

  public void addString(String addString)
  {   
    this.array.add(addString);
  }


  public ArrayList<String> GetArrayList()
  {
    return array;
  }
}

一個問題是,每種方法都使用不同的數組列表。 每次使用關鍵字new都會創建一個新的(並且為空)列表。

在您的類的頂部,一次創建ArrayList。

private ArrayList<String> myList = new ArrayList<String>();

然后在所有其他方法中引用myList而不為其分配新值。

public ArrayList<String> getArrayList() {
  return myList;
}

public void addSomeStrings() {
  myList.add("Some String");
  myList.add("Some Other String");
}

並且不要害怕閱讀Java教程。 這是一個基本概念,如果不支持基礎,您可能會感到非常沮喪。

編譯並運行以下程序。

import java.util.ArrayList;

class Apples {
    static ArrayList<String> destinationArray = new ArrayList<String>();
    public static void main(String[] args) {
        System.out.print("First time");
        viewArrayList();
        addString("Example1");
        addString("Example2");
        addString("Example3");

        System.out.print("Second time");
        viewArrayList();
        addString("Example4");
        addString("Example5");
        System.out.print("Third time");
        viewArrayList();
    }

    public static void addString(String example) {
        destinationArray.add(example);
    }

    static ArrayList getArrayList() {
        return destinationArray;
    }

    public static void viewArrayList() {
        System.out.println(getArrayList());
    }
}

這里的問題是數組對象的范圍。 您正在將字符串添加到1個數組,並嘗試打印另一個數組。 在addString()中刪除靜態塊和數組聲明。 像這樣在類定義旁邊聲明數組,

類蘋果{ArrayList destinationArray = new ArrayList(); .. ....

它應該工作。

碼:

public class Apples {
public static void main(String[] args) {
    viewArrayList(); //prints a empty arraylist
}

public static ArrayList<String> addString() {
    ArrayList<String> destinationArray = new ArrayList<String>();
    destinationArray.add("example1");
    destinationArray.add("example2");
    return destinationArray;
}

public static ArrayList<String> GetArrayList() {
    return addString();     
}

public static void viewArrayList() {
    System.out.println(GetArrayList());
}

}

輸出:

[example1,example2]

暫無
暫無

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

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