Загрузка...

ArrayList в Java

Создайте ArrayList<String> с именем tags, вызовите tags.add("oak");, затем tags.add("pine"); и напечатайте список через System.out.println(tags);. Скомпилируйте Shelf.java и запустите java Shelf. Экран должен показать одну строку: [oak, pine]. Квадратные скобки и запятая — это то, как Java печатает список. Список растёт через add. Этот растущий список после import — то, чему учит эта страница.

Список, который может расти

На странице массивов String[] держал фиксированное число ячеек в фигурных скобках. На этот массив нельзя было вызвать add. ArrayList — другой контейнер. Вы создаёте его пустым и добавляете значения через add. Каждый add увеличивает список на один элемент. Строка печати показывает все текущие значения в квадратных скобках через запятую и пробел.
Откройте Shelf.java. Оставьте имя публичного класса Shelf, чтобы оно совпадало с именем файла. Удалите остатки import kit.Bell;, Bell.ring();, package kit; и любые вызовы Porch или Lobby с прошлых страниц. Это история модуля Classes. Эта страница открывает Collections. Также удалите любой Scanner, nextLine или чтение с клавиатуры. Программа не должна ждать ввода.
Близко к началу Shelf.java, выше public class Shelf, напишите:
import java.util.ArrayList;
Этот import даёт типу ArrayList короткое имя, как import kit.Bell; давал Bell на странице import. Без этой строки javac не видит короткое имя ArrayList на этой странице. Аккуратно напишите пакет java.util и класс ArrayList. Не делайте здесь обязательным import java.util.*; — одного точного import достаточно.
Внутри main создайте список:
ArrayList<String> tags = new ArrayList<String>();
В угловых скобках стоит String, потому что этот урок хранит слова. Имя tags наберите точно как в сохраняемом файле. Вызов new ArrayList<String>() строит пустой объект списка. В этот момент в списке ноль значений. Печать сейчас показала бы [], но сохраняемый файл добавляет слова до печати.

Сначала oak, потом pine, потом печать

Вызовите tags.add("oak"); на своей строке. Затем вызовите tags.add("pine"); на следующей. Каждый вызов сохраняет одно слово в кавычках. Порядок важен для экрана: сначала oak, потом pine. Не меняйте их местами в сохраняемом файле. Не добавляйте третье слово в учебный файл этой страницы — двух add достаточно, чтобы увидеть рост и форму печати.
Затем напишите:
System.out.println(tags);
Передайте само имя списка. Не ставьте кавычки вокруг tags. Не пишите вручную System.out.println("oak"); как путь урока — суть в том, что объект списка несёт оба слова и печатает их вместе. Сохраните файл перед компиляцией.

Shelf ArrayList add oak pine

java
import java.util.ArrayList;

public class Shelf {
    public static void main(String[] args) {
        ArrayList<String> tags = new ArrayList<String>();
        tags.add("oak");
        tags.add("pine");
        System.out.println(tags);
    }
}

Из папки с Shelf.java выполните javac Shelf.java. Когда скобки, фигурные скобки, угловые скобки и точки с запятой совпадают, javac не пишет своей строки. Затем выполните java Shelf — не java Shelf.java и не java ArrayList. Уберите окончание .java из команды запуска. Запустите класс, в котором есть main.
Программа должна напечатать одну строку и остановиться: [oak, pine]. Она не просит вас вводить текст. Если терминал ждёт ввода с клавиатуры, в каком-то файле ещё остался вызов nextLine из старого упражнения. Удалите этот вызов и оставьте создание ArrayList, две строки add и System.out.println(tags);.
Пройдите запуск один раз. Java начинается с Shelf.main. Import уже назвал, какой ArrayList вы имеете в виду. Строка new строит пустой список. Первый add сохраняет oak. Второй add сохраняет pine. Строка печати просит список показать содержимое. Экран показывает [oak, pine]. Больше ничего печататься не должно. Если вы видите ding, 9 или ok, вы всё ещё запускаете старую программу Porch, Lobby, Pier или Yard. Перейдите на java Shelf.
Если javac говорит, что не находит ArrayList, строка import отсутствует, написана с ошибкой или стоит после public class Shelf. Перенесите import java.util.ArrayList; выше строки класса. Если написать tags.add(oak); без кавычек, javac считает oak несуществующим именем. Оставьте кавычки вокруг каждого слова. Если написать String[] tags = new ArrayList<String>();, типы не совпадают и javac отказывает — на этой странице держите ArrayList<String> с обеих сторон строки создания.

Фиксированный массив рядом с растущим списком

Короткий контраст держит страницу массивов в поле зрения, не смешивая её с учебным запуском. Фиксированный String[] по-прежнему работает. Он не растёт через add.

fixed String array contrast

java
public class Shelf {
    public static void main(String[] args) {
        String[] trees = {"oak", "pine"};
        System.out.println(trees[0]);
    }
}

Скомпилируйте и запустите этот контраст только как напоминание о фиксированной форме. Экран показывает oak — одну ячейку — не [oak, pine]. Нет вызова add. Чтобы хранить третье слово в фиксированном массиве, нужен новый массив с тремя ячейками. Учебный файл ArrayList — тот, где есть import java.util.ArrayList;, два вызова add и System.out.println(tags);. Файл фиксированного массива используйте только как напоминание, не как путь викторины. Не смешивайте trees.add("elm") в этот контраст — у String[] нет add, и javac откажет.

Рядом

Короткая таблица держит разницу ясной.

📊 ArrayList vs String array

Piece On this page
create ArrayList<String> tags = new ArrayList<String>();
grow tags.add("oak"); then tags.add("pine");
print list System.out.println(tags); → [oak, pine]
fixed array String[] trees = {"oak", "pine"}; — no add
Таблица только напоминание. Набираемые части для учебного файла — import, создание ArrayList, два add и печать tags.

Сравнение с import и с массивами

На странице import Porch вызывал Bell.ring(); после import kit.Bell;. Это остаётся верным как история. Эта страница меняет роль на Shelf и import на java.util.ArrayList. Остаток Bell.ring(); — другой урок. Для этой страницы держите ArrayList<String> tags, две строки add и печать списка.
На странице массивов фигурные скобки заполняли фиксированный String[]. Это по-прежнему годится для известного размера. Этот урок выбирает ArrayList, чтобы вы увидели рост через add и одну печать всего списка. Не смешивайте plants[0] и tags.add("oak") в одной демо Shelf на этой странице. Одного ясного пути достаточно: import, создать, add, add, печатать.
Когда позже понадобятся get, size или remove, следующая страница — методы list — покрывает эти вызовы. Оставайтесь здесь с add и полной печатью списка. Не делайте цикл по списку обязательным на этой странице; печати объекта списка достаточно, чтобы увидеть оба слова.

Что остаётся для методов list

Эта страница открывает Collections списком, который может расти. Следующая страница работает с обычными вызовами списка: прочитать ячейку или спросить, сколько значений. Оставайтесь здесь с add и полной печатью. Не делайте tags.get(0) обязательным здесь, если вы его ещё не знаете; цель — растущий список и экран [oak, pine].
Когда рядом ещё лежат старые Porch.java или Lobby.java, оставьте их или удалите только если они путают команду запуска. Запустите java Shelf после компиляции файла ArrayList этого урока.

Перед методами list

Вы можете импортировать java.util.ArrayList, создать ArrayList<String> tags, вызвать tags.add("oak"); и tags.add("pine");, затем напечатать tags. Скомпилируйте Shelf.java и запустите java Shelf. Экран показывает [oak, pine]. Список вырос через add. Следующая страница — методы list, где вы достаёте одно значение или спрашиваете длину списка.
Держите import выше класса. Держите оба add до печати. Держите запуск java Shelf для этого урока. Эти три привычки — контрольная точка этой страницы перед движением дальше. Когда после двух add экран показывает [oak, pine], ArrayList сделал работу этого урока, и вы готовы к следующей теме.

🧠 Проверьте Свои Знания

Готов к Началу

Проверьте Свои Знания

Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему

❓
5
Вопросы
🎯
70%
Для Прохождения
♾️
∞
Время
🔄
∞
Попытки

📝 Инструкции

  • Внимательно прочитайте каждый вопрос
  • Выберите лучший ответ на каждый вопрос
  • Вы можете пересдавать тест столько раз, сколько захотите
  • Ваш прогресс будет показан вверху