#java #class #variables
#java #класс #переменные
Вопрос:
Я изучаю Java, и теперь у меня есть этот вопрос.
Я создал класс с именем «Driver», и он будет содержать информацию о драйвере (имя и день рождения).
Чтобы создать новый драйвер, мне просто нужно сделать:
Driver d1 = new Driver("John", "01/01/1980");
Теперь представьте, что у меня есть программа, которая будет считывать информацию о драйверах x из файла. Как я могу создать x драйверов?
Моя проблема в том, что я думаю, что мне нужны переменные x для драйверов x, но переменные могут быть жестко запрограммированы только мной…
Ответ №1:
Или вы можете использовать массив или коллекцию ( List
или Set
):
List<Driver> drivers = new ArrayList<Driver>();
drivers.add(new Driver(..));
drivers.add(new Driver(..));
При чтении из файла вы обычно используете цикл. Итак, на каждой итерации добавляйте объект в список.
Комментарии:
1. Я никогда не работал с коллекциями, поэтому я задаю другой вопрос. Используя этот список, как я могу получить доступ к определенному драйверу?
2. проверьте javadoc. drivers.get(index) дает вам индексный элемент
Ответ №2:
По сути, вам нужно прочитать каждый драйвер один за другим и сохранить их в коллекции. В Java существует несколько классов коллекций, но ArrayList
в вашем случае все должно быть в порядке:
ArrayList<Driver> drivers = new ArrayList<Driver>();
Driver d1 = new Driver("John", "01/01/1980");
drivers.add(d1);
Ответ №3:
вы должны создать List<Driver>
(или какую-либо другую коллекцию, например Map
), в которой будут храниться все драйверы.
Ответ №4:
Используйте простой массив:
Driver[] drivers = {new Driver("John", "01/01/1980"),
new Driver("Smith", "02/02/1990")};
// or
Driver[] drivers = new Driver[2];
drivers[0] = new Driver("John", "01/01/1980");
drivers[1] = new Driver("Smith", "02/02/1990");
Но массив имеет фиксированный размер после его создания. Таким образом, вы можете использовать ArrayList
вместо:
List<Driver> drivers = new ArrayList<Driver>();
drivers.add(new Driver("John", "01/01/1980"));
drivers.add(new Driver("Smith", "02/02/1990"));
// ...