import java.util.*;
public class ArrayListMagnet {
public static void main (String[] args){
ArrayList<String> a = new ArrayList<String>(); //создаётся только для объектов String
a.add(0, "ноль"); //помещаем в ArrayList слова один, два, три под разными индексами
a.add(1, "один"); //помещаем в ArrayList слова один, два, три под разными индексами
a.add(2, "два"); //помещаем в ArrayList слова один, два, три под разными индексами
a.add(3, "три"); //помещаем в ArrayList слова один, два, три под разными индексами
printAl(a); //вызов метода
if (a.contains("три")) { //Если a содержит элемент "три", добавляем элемент "четыре"
a.add("четыре");
}
a.remove(2); //Удаляем индекс ArrayList-а номер 2, у которого элемент "два"
printAl(a); //вызов метода
if (a.indexOf("четыре") != 4) { /*Тут вопрос, как я понял тут условие, что если индекс ArrayList-а под номером четыре
не равен индексу 4, то добавить елемент 4.2. И он добавляет, так какой же всё же индекс у 4*/
a.add(4, "4.2");
}
printAl(a); //вызов метода
if (a.contains("два")) { //Это условие не срабатывает
a.add("2.2");
}
printAl(a); //вызов метода
}
public static void printAl(ArrayList<String> al) { //Тут прошу пояснить параметр этого метода
for (String element : al) { //для каждого элемента в массиве al: присвоить элемент переменной element
// и запустить тело цикла
System.out.print(element + " ");
}
System.out.println();
}
}
Здравствуйте! Задача из книги "Изучаем Java" главы 6. Не очень понятен некоторый код. Строка 18. Как я понял при вызове метода add класса ArrayList передаётся два параметра, это его индекс и элемент. В строке 18 есть условие, что если экземпляр a, содержит элемент "три", то элемент добавляем элемент "четыре". Так какой же индекс, будет у этого элемента? Или тут не обязателен факт того, что ему будет присвоен индекс?
Также прошу объяснить строку 29, а точнее его параметр (полностью он написан так (ArrayList<String> al) тут почему то в коде форума удалён <String>) . Как он связан с циклом for?
Спасибо!Максим
23 уровень
Задача из книги Изучаем Java
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим
14 мая 2020, 15:22
С первым вопросом разобрался. Там есть метод remove, который удаляем элемент "два" и соответственно, меняются индекс элемента "три".
Но всё же прошу объяснить строку 29. Она полностью выглядит так - public static void printAl(ArrayList<String> al). То есть как я понял, метод printAl принимается с параметром (ArrayList<String> al). Этот параметр принимает ArrayList<String> с переменной a? Я правильно понял?
0
VladimirMaster
14 мая 2020, 16:52
Максим, вот тут Иван разбирает хорошо Generics.
0
Стас Пасинков Software Developer в Zipy Master
14 мая 2020, 18:51
ваш метод приниимает любой объект типа ArrayList<String> и помещает его в свою внутреннюю переменную al
при вызове этого метода в мейне - вы передаете туда как-раз объект этого же типа (который вы предварительно сохранили в переменную а этого же типа).
если бы вы в мейне понасоздавали еще несколько других объектов такого типа и передавали бы их в метод printAl() - этот метод бы прекрасно бы работал с любым таким объектом (а именно, перебирал бы все элементы такого списка и выводил бы их на экран с пробелом после каждого элемента, после чего вывел бы пустую строку)
+1
Максим
15 мая 2020, 06:58
Спасибо
0
Ksenia MarioMaster
13 мая 2020, 21:49
в арей лист индекс будет всегда.
14 строка как будет работать?
сделай фор так
за printAl(ArrayList<String> al) - не понятно вопрос. "в коде форума"? 0