从另一个 Class 调用 ArrayList

Calling ArrayList From Another Class

我在从另一个 class 调用数组列表时遇到问题。我在里面定义了一个名为 IntBag 的 class 和一个 arraylist 包。在 main 方法中,我想编写一个程序,使我能够从另一个 class 更改 arraylist 的长度。当我尝试时,出现 "cannot find symbol" 错误。你能帮忙吗?

import java.util.*;
public class IntBag 
{
   private static ArrayList<Integer> bag = new ArrayList<Integer>(); 
   private int maxNumber;

   public IntBag(ArrayList bag, int maxNumber) 
   {
       this.bag = bag;
       this.maxNumber = maxNumber;  
   }

   public static ArrayList getBag()
   {
       return bag;
   }

   public int sizeArray(ArrayList bag)
   {    
    return bag.size();
   }
}
public class test
{

    public static void main(String[] args) 
    {
        Scanner scan = new Scanner(System.in);
        int choice, size;
        IntBag.getBag();
        System.out.println("Enter the size of an array : ");
        size = scan.nextInt();
        bag = new ArrayList<Integer>(size); 
     }
}

IntBag 是一个非静态 class,这意味着要使用它,您必须创建一个新实例 class。为此,您需要执行以下操作:

IntBag name_of_object = new IntBag();

然后,要引用此对象中的包,您可以通过调用来访问它:

name_of_object.getBag();

要从备用 class 更改 ArraryList 的大小,您需要在 IntBag class:

中包含一个 setter 方法
public void setBag(ArrayList<Integer> newList) {
    this.bag = newList;
}

然后,在您的备用 class 中,您可以执行以下操作:

IntBag bag = new IntBag(new ArrayList<Integer>(), 10);
bag.setBag(new ArrayList<Integer>())

您还可以为 maxnumber 变量创建一个类似的 setter:

public void setMaxNumber(int max) {
    this.maxNumber = max;
}

但请注意 ArrayList 没有最大或最小大小。当您向其中添加或删除变量时,它们会扩大或缩小。

代码放在哪里?

好好想想吧。在您的主要 class 中,您已经在创建诸如扫描仪和两个整数之类的对象。您只需以相同的方式创建 IntBag 对象,无论您在哪里需要使用它。所以你的主要方法可能看起来像这样:

public static void main(String[] args) 
{
    Scanner scan = new Scanner(System.in);
    int choice, size;

    System.out.println("Enter the size of an array : ");
    size = scan.nextInt();

    ArrayList<Integer> bag = new ArrayList<Integer>(); // arrraylists do not have a size. They automatically expand or decrease

    IntBag intBag = new IntBag(bag, 30); // creates a new IntBag object 
 }