Нужно описать динамическое создание ArrayList с разными именами,Java

не могу понять,как можно реализовать динамическое создание массива с разными именами.


Допустим у нас есть класс зоопарк(массив Zoo), в нём располагается произвольное число клеток(массив Cell) которое может содержать до 4-х животных(объект класса Animal) , при том что каждая клетка может докупаться. То есть при "покупке" клетки, она должна добавляться в массив Zoo с уникальным именем(Cell1,Cell2,Cell3 и тд) и при запросе мы можем обращаться к какой-то клетке и узнавать какие животные там сидят. Вот ТЗ:


Необходимо описать класс зоопарк.Предполагается что в нём расположено произвольное число клеток. В Зоопарке клетки могут докупаться. Каждая клетка может быть пустой или содержать до 4-х животных. У меня есть один кустарный метод,который можно реализовать как:у зоопарка уже есть 6 клеток, 3 разблокированы сразу, а ещё 3 надо докупить(без создания новых). Но хочется реализовать это более человечно, с созданием новых. Можете пожалуйста помочь,я новичок в этом деле,поэтому не особо понимаю,как это сделать.


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

Автор решения: Alex Krass

Сам ArrayList не содержит никаких имен. Если вопрос только в том, чтобы сгенерировать имя для поля в классе Cell, то это можно сделать в методе добавления любым удобным способом.

К примеру добавить метод покупки клетки buyCell:

public class Main {
    @Data class Cell {
        @NonNull private String name;
    }

    @Data class Zoo {
        private List<Cell> cells = new ArrayList<>();

        public void buyCell() {
            cells.add(new Cell("Cell" + (cells.size() + 1)));
        }
    }

    public void run() {
        Zoo zoo = new Zoo();
        zoo.buyCell();
        zoo.buyCell();
        zoo.buyCell();

        System.out.println(zoo);
        // Вывод: Main.Zoo(cells=[Main.Cell(name=Cell1), Main.Cell(name=Cell2), Main.Cell(name=Cell3)])
    }

    public static void main(String[] args) { new Main().run(); }
}

P.S.> аннотации @Data, @NonNull от библиотеки Lombok позволяют не писать геттеры, сеттеры, конструктор в классе Cell и методы toString для печати. Они не особо важны, главное продемонстрировано в методе buyCell cells.add(new Cell("Cell" + (cells.size() + 1)));.

→ Ссылка