Начнет с моим кодомТого же значение для каждого ключа в HashMap
public void simulateSale(List<IceCream> dailyIceCreamStock) {
date = LocalDate.now().minusDays(6);
DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd");
for (int i = 0; i < timeInterval; i++) {
for(IceCream iceCream: dailyIceCreamStock){
iceCream.setSoldCount(rand.nextInt(IceCream.AMOUNT + 1));
iceCream.setStockDate(date);
}
//Every day should have different ArrayList of values
this.weeklyStats.put(date.toString(fmt), dailyIceCreamStock);
date = date.plusDays(1);
}
Проблема в этой строке: this.weeklyStats.put(date.toString(fmt), dailyIceCreamStock);
Как вы можете видеть, я добавляю случайным образом сгенерированных значений в HashMap типа:
Map<String, List<IceCream>> weeklyStats
Проблема в том, что когда я повторяю эту хэш-карту, каждая клавиша имеет тот же список значений. Результат выглядит следующим образом:
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
[11, 3, 11, 12, 20]
Желаемый результат должен иметь случайные значения в каждом из этих списков. Я думаю, что есть проблема с областью видимости, которую я не понимаю
В вашей петле нет переменной. Что такое timeInterval? – nafas
timeInterval - глобальная переменная int, для этого случая ее значение равно 7 – user2151486
, так как другие ответы, dailyIceCreamStock будет одинаковым для каждого еженедельника. – nafas