# ArrayList

Усвоив, что такое массивы, можно поближе изучить java.util.ArrayList.

ArrayList - автоматически расширяемый массив. Вы можете работать с массивом, но при этом не используются квадратные скобки.

Массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

Работать с ArrayList просто: создайте нужный объект, вставляйте созданные объекты методом add(), обращайтесь к ним методом get(), используйте индексирование так же, как для массивов, но без квадратных скобок. ArrayList также содержит метод size(), который возвращает текущее количество элементов в массиве.

Пример:

```
ArrayList<String> catnamesList = new ArrayList<String>();
catnamesList.add("Васька");
editResult.setText((CharSequence) catnamesList.get(0));
```

Метод size(), который возвращает общее число элементов массива. В этом случае, чтобы получить имя последнего кота в массиве, нужно получить размер массива и отнять единицу.

Пример:

```
editResult.setText((CharSequence) catnamesList.get(catnamesList.size() - 1));
```

Существует метод indexOf(), который ищет подходящий элемент и выводит его индекс

Пример:

```
int index = catnamesList.indexOf("Рыжик");

// выводим имя кота и его номер в массиве

editResult.setText("Рыжик числится под номером " + index);
```

Просмотр всех элементов через цикл

Пример:

```
String catname = "";
for (int i = 0; i < catnamesList.size(); i++) {
    catname = catname + catnamesList.get(i) + " ";
}
editResult.setText("Все коты: " + catname);
```

Вопрос 1.

Чем принципиально отличаются коллекции, в частности и ArrayList, от массива?

Вопрос 2.

Напишите программу, взяв за основу код из примера выше, которая будет выводить в консоль поочередно имена всех котов с их индексами в ArrayList (для вывода используйте цикл)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://comaqa.gitbook.io/java-automation/kollekcii/arraylist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
