gpt4 book ai didi

java - ArrayList 声明 - 设置未知大小

转载 作者:行者123 更新时间:2023-12-01 12:19:38 25 4
gpt4 key购买 nike

我刚刚学习 Java 第八周,所以我还很新。

我有一个类,它有一个 ArrayList 对象 list。我有另一个名为 TransactionCalc 的类。我希望 TransactionCalc 有自己的 ArrayList 对象,称为 arr3。我需要与列表一样大。我知道如何声明一个大小不是 10 的 ArrayList,但是如果您还不知道确切的大小,该怎么做呢?可能吗?

public class TransactionCalc extends CalculateAbstract{

private int count = 0;
private ArrayList <ItemAttribute> arr3 = new ArrayList <ItemAttribute> (1);
//the 1 needs to be list.size() ??

我假设在另一个类中我需要执行 public static final int = list.size(),但是是否可以将该常量传递给 TransactionCalc 类,以便它可以出现在声明中?

我忘了添加这个...因为 arrayList 的功能并不是真正需要的,我也可以做 list.toArray(arr3) 但这仍然不允许它成为一个TransactionCalc 类的对象。可以这样做吗?我想避免一次又一次地将相同的 arr3 发送到同一类中的多个方法。

另外,我如何将其作为构造函数?

在 amaleemur____________ 的帮助下进行编辑

我已经更新了我的代码:

public class FindItemInfo implements InterfacePrint{
ArrayList <ItemAttribute> list = new ArrayList<ItemAttribute>();
//load arraylist and do something with it
//sort arraylist

public void printPriority(){
TransactionCalc finish = new TransactionCalc();
for (int i = 0; i < list.size(); i++){
for (int x = 0; x < list.size(); x++){
if(arr2.get(i) == list.get(x).getPriority()){
finish.cashOut(list.get(x), bankAccount, list.size());
} //send sorted arr2 to TransactionCalc class
}
}

public static int getListSize(){
return list.size();
}
}


public class TransactionCalc {//extends CalculateAbstract{
private int count = 0;
//private ArrayList <ItemAttribute> arr3 = new ArrayList <ItemAttribute> (FindItemInfo.getListSize());
private ItemAttribute[] arr3 = new ItemAttribute[FindItemInfo.getListSize()];

public void cashOut (ItemAttribute item, double bankAccount, int size) {
//ItemAttribute[] arr3 = new ItemAttribute[size];

double runningTotal = 0;
if((runningTotal + (item.getQuantity()*item.getPrice()))<= bankAccount){
runningTotal += item.getQuantity()*item.getPrice();
bankAccount -= runningTotal;
System.out.format("You will spend $%.2f on " + item.getQuantity() + " of "+ item.getDescription(), runningTotal);
System.out.format(" and have $%.2f left to spend\n", bankAccount);
}
else{
arr3[count] = item;
count++;
}
}

我将 arr3 设为 TransactionCalc 类的对象,因为它用于一些方法。数组/数组列表的目的是收集未打印的项目。我可以使用数组或数组列表。我最初选择了一个数组,但后来不知道它的大小。

我现在收到静态和非静态错误。当我尝试解决这个问题时,它会导致更多问题。

最佳答案

使用 ArrayList 的好处是您不必声明大小。

所以这已经足够了,您可以将项目添加到数组列表中。

private ArrayList <ItemAttribute> arr3 = new ArrayList <ItemAttribute>();

为了获得列表的大小,我建议这样做:

在包含 ArrayList 列表的类中,创建一个方法

public int getListSize(){

return list.size();

}

现在您可以安全地访问列表的大小。这有帮助吗?

所以现在你应该这样做:

private ArrayList <ItemAttribute> arr3 = 
new ArrayList <ItemAttribute>(otherClass.getListSize());

其中 otherClass 是带有 ArrayList 列表的其他类名称的占位符。

关于java - ArrayList 声明 - 设置未知大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com