java ArrayList всегда пуст при вызове метода

моя программа проста. У меня есть класс с двумя методами. У меня есть еще один класс, в котором вызываются эти два метода. Когда вызывается первый метод, список массивов инициализируется и заполняется некоторыми объектами, затем вызывается второй метод просто для того, чтобы сообщить размер списка массивов и распечатать его. Я не могу понять, почему я всегда получаю пустое значение при вызове второго метода. Однако, когда я печатаю массив внутри первого метода, я получаю размер и все его элементы. Arraylist является общедоступным. Пожалуйста, взгляните на код..

в классе 1

Items initialize = new Items();
initialize.init(); 
Items view = new Items();
view.viewItems();

в классе 2

public class Items {

public String id;
public String name;
public String details;
public String stock;

public ArrayList<Items> myList = new ArrayList<Items>();

public void init(){

    Items item1 = new Items();


item1.id = "0023";
item1.name = "Round Table";
item1.details = "Brown, high quality wood blah blah..";
item1.stock = "34";
myList.add(item1);


if(myList.size()==0){
        System.out.println("There are no products to display");
    }

    Iterator<Items> iterator = myList.iterator();
    System.out.println(myList.size());
            System.out.println("Products Available:");
    while(iterator.hasNext()){
        Items current = iterator.next();

        System.out.println("\nID: " +current.id + "\nTitle: "+current.name+"\nDescreption: "+current.details+"\nAmount: "+current.stock);

}

public void viewItems() {

int size  = myList.size();

if(myList.size()==0){
        System.out.println("There are no products to display");
    }

    Iterator<Items> iterator = myList.iterator();
    System.out.println(myList.size());
            System.out.println("Products Available:");
    while(iterator.hasNext()){
        Items current = iterator.next();

        System.out.println("\nID: " +current.id + "\nTitle: "+current.name+"\nDescreption: "+current.details+"\nAmount: "+current.stock);



}

Итак, результаты таковы, что при вызове первого метода я вижу элементы и номер размера, добавляющие или удаляющие продукты (много экспериментировал), при вызове другого метода я всегда получаю 0 для размера и пустой массив. Я пробовал это с общедоступной строкой, и методы изменяют строку при вызове. Так что я предполагаю, что это что-то с ArrayList.. СПАСИБО!


person Vergil C.    schedule 10.02.2013    source источник


Ответы (1)


Вы создаете new instance of Items, а затем вызываете метод viewItems(). Вам нужно вызвать viewItems() для того же экземпляра, для которого вы вызвали init()

Items initialize = new Items();
initialize.init(); 
initialize .viewItems();
person PermGenError    schedule 10.02.2013
comment
Вы сделали мой день! Я потратил 2 часа, сосредотачиваясь на массиве и ища проблему вокруг него, в то время как его не было вообще! Благодарю вас!!! - person Vergil C.; 10.02.2013