user2201189
user2201189

Reputation: 79

How to create a method that returns an ArrayList

From reading tutorials and practicing Java, I have come across a problem. I have created a String ArrayList, added string to it. However I want one method which allows me to add more string to this arrayList and another method which allows me to display this arrayList. below is my attempt to solve this problem. My code only prints an empty Array List

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

Upvotes: 0

Views: 40038

Answers (8)

Vijay
Vijay

Reputation: 11

Code:

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

}

Output:

[example1, example2]

Upvotes: 0

Subhrajyoti Majumder
Subhrajyoti Majumder

Reputation: 41200

Create a Object of a ArrayList and pass reference to different methods. Example create a ArrayList Object in main class and pass it to addString & display method.

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");
}
...

Upvotes: 2

mani_nz
mani_nz

Reputation: 5602

The scope of the array object is the problem here. You are adding string to 1 array and trying to print another array. Remove the static block and the array declaration in addString(). Declare the array next to the class definition like this,

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

It should work.

Upvotes: 0

AmitG
AmitG

Reputation: 10543

Compile and run following program.

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

Upvotes: 0

Mel Nicholson
Mel Nicholson

Reputation: 3225

One problem is that you use a different array list for each method. Every time you use the keyword new you are creating a new (and empty) list.

At the top of your class create the ArrayList once...

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

then refer to myList in all your other methods without assigning it a new value.

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

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

and don't be afraid to walk through a Java tutorial. This is a fundamental concept and you may get pretty frustrated if you don't shore up your foundation.

Upvotes: 0

DessDess
DessDess

Reputation: 787

Your variable destinationArray is declared in a method, it meens that it only exists inside this method outside addString() the object does not exist anymore and you can't access it in other methods. To do it you have to declare it as a class variable like that :

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

When your program is executed, in fact it executes the main method, as a result if you want to execute your method addString() you will have to call it in the main function. It will look like that :

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

Upvotes: 2

Xyzk
Xyzk

Reputation: 1332

Didn't you forget adding addString() to getArrayList()?

Upvotes: 2

Grammin
Grammin

Reputation: 12205

I would do something like this:

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

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


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

Upvotes: 0

Related Questions