[英]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
對象,並將其傳遞給addString
和display
方法。
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.