Код Java возвращает только один объект из тестового метода

Я хочу сгенерировать некоторые тестовые данные, используя этот код Java:

@GetMapping("/volumes")
    public ResponseEntity<List<DashboardDTO>> getProcessingVolumes() {

        return ResponseEntity.ok(testDate());
    }


    public List<DashboardDTO> testDate() {



        List<DashboardDTO> list = null;

        for (int i = 0; i <= 10; i++) {
            list = new ArrayList<>();
            DashboardDTO obj = new DashboardDTO();
            obj.setAmount(ThreadLocalRandom.current().nextInt(20, 500 + 1));

            LocalDate localDate = LocalDate.now().minus(Period.ofDays((new Random().nextInt(365 * 70))));
            Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

            obj.setDate(date);
            obj.setNumber_of_transactions(ThreadLocalRandom.current().nextInt(300, 5000 + 1));
            list.add(obj);
        }
        return list;
    }

Но при запуске кода генерируется только один объект. Вы знаете, где я ошибаюсь? Я хочу создать 10 тестовых объектов.

Я ценю быстрое принятие!

GhostCat 04.02.2019 06:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Здесь:

for (int i = 0; i <= 10; i++) {
        list = new ArrayList<>();

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

Просто переместите эту строку list = new ArrayList<>();спереди цикла, чтобы она выполнялась только один раз.

Ваш код создает 11 новых списков, каждый с одной записью, и вы возвращаете этот последний объект списка. Вместо этого: создайте один список и добавьте свои 11 элементов, а затем верните этот единственный список.

for (int i = 0; i <= 10; i++) {
        list = new ArrayList<>(); //(Fix here)--> resetting your list everytime causing only single object to return.

Попробуйте инициализировать только один раз.

List<DashboardDTO> list = new ArrayList<>();
    for (int i = 0; i <= 10; i++) {
        DashboardDTO obj = new DashboardDTO();
        obj.setAmount(ThreadLocalRandom.current().nextInt(20, 500 + 1));

        LocalDate localDate = LocalDate.now().minus(Period.ofDays((new Random().nextInt(365 * 70))));
        Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

        obj.setDate(date);
        obj.setNumber_of_transactions(ThreadLocalRandom.current().nextInt(300, 5000 + 1));
        list.add(obj);
    }
    return list;

Другие вопросы по теме