如何创建返回ArrayList的方法

时间:2013-03-26 17:30:21

标签: java

从阅读教程和练习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());
    }
}

8 个答案:

答案 0 :(得分:2)

创建ArrayList的对象并传递对不同方法的引用。示例在主类中创建ArrayList对象并将其传递给addString&amp; 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");
}
...

答案 1 :(得分:2)

您是否忘记将addString()添加到getArrayList()?

答案 2 :(得分:2)

您的变量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
}

答案 3 :(得分:0)

我会做这样的事情:

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

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


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

答案 4 :(得分:0)

一个问题是您为每个方法使用不同的数组列表。每次使用关键字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教程。这是一个基本概念,如果你不支持你的基础,你可能会感到很沮丧。

答案 5 :(得分:0)

编译并运行以下程序。

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());
    }
}

答案 6 :(得分:0)

数组对象的范围是这里的问题。您正在将字符串添加到1个数组并尝试打印另一个数组。删除addString()中的静态块和数组声明。声明类定义旁边的数组,如下所示,

class apples { ArrayList destinationArray = new ArrayList(); .. ....

它应该工作。

答案 7 :(得分:0)

代码:

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]