如何创建一个返回ArrayList的方法
从阅读教程和练习Java,我遇到了一个问题。我创建了一个String ArrayList,并在其中添加了字符串。不过,我想要一个方法,它允许我添加更多的字符串到这个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");
}
...
我会做这样的事情:
class apples
{
private ArrayList<String> array = new ArrayList<String>();
public void addString(String addString)
{
this.array.add(addString);
}
public ArrayList<String> GetArrayList()
{
return array;
}
}
你没忘了添加addString()来getArrayList()?
您的变量destinationArray
在方法中声明,它表明它只存在于此方法内addString()
以外的对象不再存在,并且您无法在其他方法中访问它。要做到这一点,你必须把它声明为类变量,这样的:
class apples{
ArrayList<String> destinationArray = new ArrayList<String>();
public static void main(String[] args)
当执行你的程序,其实它执行的主要方法,因此,如果你想执行你的方法addString()
你将有在主函数中调用它。它会看起来像这样:
public static void main(String[] args)
{
this.addString();
this.viewArrayList(); //prints a empty arraylist
}
一个问题是,您使用每个方法不同的数组列表。每当您使用关键字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()中的静态块和数组声明。在这个类定义的旁边声明数组,
class apples {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());
}
}
输出:
[例1,例2]
既然你正试图反复操作相同的列表,您将得到更好的服务在你的类中创建'List'属性,在你的构造函数中初始化它,然后创建方法来操作它(添加项目,删除项目,返回列表等)。您还应该删除您在代码中散布的静态修饰符。 –
Perception
2013-03-26 17:34:28