【问题标题】:java ArrayList is always empty when method called调用方法时java ArrayList始终为空
【发布时间】:2013-02-10 18:49:15
【问题描述】:

我的程序很简单。我有一个有 2 种方法的类。我有另一个类,其中调用了这两种方法。当第一个方法被调用时,arraylist 被初始化并填充了一些对象,然后调用第二个方法简单地告诉 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 有关系。谢谢!

【问题讨论】:

    标签: java arraylist size zero empty-list


    【解决方案1】:

    您正在创建一个new instance of Items,然后调用viewItems() 方法。您必须在调用init() 的同一实例上调用viewItems()

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

    【讨论】:

    • 你成就了我的一天!我花了 2 个小时专注于 arraylist 并搜索它周围的问题,而它根本不存在!谢谢!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多