Я только на 8-й неделе Java, поэтому я совершенно новый.ArrayList Declaration - set unknown size
У меня есть класс, который имеет объект ArrayList, список. У меня есть еще один класс под названием TransactionCalc. Я хотел бы, чтобы TransactionCalc имел свой собственный объект ArrayList, называемый arr3. Мне нужно быть таким же большим, как и список. Я знаю, как объявить ArrayList размером не более 10, но как вы это делаете, если еще не знаете точный размер? Является ли это возможным?
public class TransactionCalc extends CalculateAbstract{
private int count = 0;
private ArrayList <ItemAttribute> arr3 = new ArrayList <ItemAttribute> (1);
//the 1 needs to be list.size() ??
Я предполагаю, что в другом классе, мне нужно будет сделать публичный статический окончательный Int = list.size(), но это можно получить, что константа к классу TransactionCalc, так что это может быть в декларация?
Я забыл добавить это ... так как функциональность arrayList на самом деле не нужна, я мог бы также сделать list.toArray(arr3)
, но это все равно не позволит ему быть объектом класса TransactionCalc. Можно ли это сделать? Я бы хотел, чтобы повторять один и тот же arr3 снова и снова для нескольких методов в одном классе.
Кроме того, как бы я положил это как конструктор?
EDIT с помощью от 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 - собирать предметы, которые не печатаются. Я могу использовать массив или arraylist. Сначала я пошел с массивом, но потом не знал размера.
Теперь я получаю статические и нестатические ошибки. Когда я пытаюсь исправить это, это вызывает больше проблем.
Я забыл добавить это ... так как функциональность arrayList на самом деле не нужна, я мог бы также делать list.toArray (arr3), но это все равно не позволяло бы ему быть объектом класса TransactionCalc. Можно ли это сделать? Я бы хотел, чтобы повторять один и тот же arr3 снова и снова для нескольких методов в одном классе. –
Что это в этом классе TransactionCalc, который должен быть сделан с этим вашим списком? Может быть, TransactionCalc может поддерживать методы, которые вы вызываете из первого класса? Если у вас нет полного примера кода/заглушки, по крайней мере, укажите некоторый псевдокод ваших разных классов. – mattias
Вам не нужно устанавливать начальный размер 'ArrayList' и редко хотите. Просто используйте конструктор no argument. –