Как в массив записать переменную, а не значение

Подскажите пожалуйста, есть три переменные

private static double totalRevenueNegative = 0;
private static double totalRevenueNormal = 0;
private static double totalRevenuePositive = 0;

Есть ArrayList куда я хочу записать переменные (не значения)

ArrayList<Double> forecast = new ArrayList<>();
forecast.add(totalRevenueNegative);
forecast.add(totalRevenueNormal);
forecast.add(totalRevenuePositive);

Далее , у меня стоит задача, в цикле доставать из массива переменные по очереди, и присваивать им значения, но, если я в цикле использую такую запись forecast.get(i) - то она мне достаёт из массива значение, а именно 0.0, а нужна переменная, чтобы ей присваивать новые значения


Ответы (2 шт):

Автор решения: Алексей Шиманский

По-моему тут «Ошибка молотка» или «Ошибка XY».

Всё делается проще (отчасти).

Если у вас есть три переменные, связанные собой по контексту, то проще не определять три переменные отдельно, а сделать класс с такими свойствами и уже экземпляр класса добавлять в список, а потом вынимать его и оперировать свойствами.


А если планируется оперировать только тремя переменными, то зачем в принципе список? Почему нельзя просто оперировать этими переменными в коде?

→ Ссылка
Автор решения: Olegator36

Проблема в том, что double примитивный тип, и является значимым. Вам нужно создать отдельный класс с одной переменной, чтобы можно было записать ссылку в массив. Вот:

public class DOUBLE {
    public double doub;
    public DOUBLE(double doub){
        this.doub = doub;
    }
}

Записать в массив:

private static DOUBLE totalRevenueNegative = new DOUBLE(0);
private static DOUBLE totalRevenueNormal = new DOUBLE(0);
private static DOUBLE totalRevenuePositive = new DOUBLE(0);
ArrayList<DOUBLE> forecast = new ArrayList<>();
forecast.add(totalRevenueNegative);
forecast.add(totalRevenueNormal);
forecast.add(totalRevenuePositive);

Обратиться:

double a = forecast.get(0).doub;
double b = forecast.get(1).doub;
double c = forecast.get(2).doub;
→ Ссылка