Примеры по ArrayList и Generics

Открыта
Примеры по ArrayList и Generics - 1

— Давай-ка я начну с действительно полезных вещей. Сейчас ты увидишь несколько полезных примеров работы с ArrayList и Generics:

— Пример 1:

Ввод списка целых чисел с клавиатуры
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
    ArrayList<Integer> list = new ArrayList<Integer>() ;

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;
        list.add(Integer.parseInt(s));
    }
}

— Пример 2:

То же, чётные числа добавляются в конец списка, нечётные — в начало.
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    ArrayList<Integer> list = new ArrayList<Integer>();

    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;

        int x = Integer.parseInt(s);
        if (x % 2 == 0)  //проверяем, что остаток от деления на два равен нулю
            list.add(x);          //добавление в конец
        else
            list.add(0, x);      //вставка в начало
    }
}

— Пример 3:

Удаление всех чисел больше 5:
public static void main(String[] args) throws IOException
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in) );
    ArrayList<Integer> list = new ArrayList<Integer>();

    list.add(1);
    list.add(7);
    list.add(11);
    list.add(3);
    list.add(15);

    for (int i = 0; i < list.size(); ) //убрали увеличение i внутрь цикла
    {
        if (list.get(i) > 5)
            list.remove(i);  //не увеличиваем i, если удалили текущий  элемент
        else
            i++;
    }
}

— Пример 4:

Разделение массива на два — чётных и нечётных чисел
public static void main(String[] args) throws IOException
{
    //статическая инициализация массива
    int[] data = {1, 5, 6, 11, 3, 15, 7, 8};

    //создание списка, где все элементы должны быть типа Integer
    ArrayList<Integer> list = new ArrayList<Integer> ();

    //заполнение списка из массива
    for (int i = 0; i < data.length; i++) list.add(data[i]);

    ArrayList<Integer> even = new ArrayList<Integer>();  //чётные
    ArrayList<Integer> odd = new ArrayList<Integer>();    //нечётные

    for (int i = 0; i < list.size(); i++)
    {
        Integer x = list.get(i);
        if (x % 2 == 0)    //если x - чётное
            even.add(x);   // добавляем x в коллекцию четных чисел
        else
            odd.add(x);    // добавляем x в коллекцию нечетных чисел
    }
}
2
Задача
Java Syntax,  7 уровень,  8 лекция
Недоступна
Набираем код
Внимание! Объявляется набор кода на JavaRush. Для этого включите режим повышенной внимательности, расслабьте пальцы, читайте код и… набирайте его в соответствующем окошке. Набор кода — вовсе не бесполезное занятие, как может показаться на первый взгляд: благодаря ему новичок привыкает к синтаксису и запоминает его (современные IDE редко дают ему это сделать).

— Пример 5:

Слияние списков.
public static void main(String[] args) throws IOException
{
    ArrayList<Integer> list1 = new ArrayList<Integer>();   //создание списка
    Collections.addAll(list1, 1, 5, 6, 11, 3, 15, 7, 8);   //заполнение списка

    ArrayList<Integer> list2 = new ArrayList<Integer>();
    Collections.addAll(list2, 1, 8, 6, 21, 53, 5, 67, 18);

    ArrayList<Integer> result = new ArrayList<Integer>();

    result.addAll(list1);   //добавление всех значений из одного списка в другой
    result.addAll(list2);

    for (Integer x : result)   //быстрый for по всем элементам, только для коллекций
    {
        System.out.println(x);
    }
}

— Круто. И что Диего даст мне сейчас кучу аналогичных задач, да?

— Ага!

Комментарии (269)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Мариам8 уровень, Columbus
7 января, 01:39
какой красивый и короткий код! Но слияние списков не совсем понятно
Антон Вакуленко9 уровень, Харьков
4 января, 11:02
ну это уже вообще за гранью, ладно там давать какую-то часть материала наперёд, но здесь вообще жопа!!!!!
madick11 уровень, Оренбург
28 декабря 2019, 19:37
часть кода из примера №3: for (int i = 0; i < list.size(); ) //убрали увеличение i внутрь цикла { if (list.get(i) > 5) list.remove(i); //не увеличиваем i, если удалили текущий элемент else i++; не увеличиваем i по причине того, что массив тут же сдвигается, и , если бы мы увеличили i, то перекскочили одну ячейку, правильно понимаю?
AhanSere8 уровень
2 января, 19:33
Да
hidden #218035113 уровень
12 декабря 2019, 06:37
for (Integer x : result) подробнее об этом цикле здесь нажми
Андрей Петров15 уровень, Медвежьегорск
6 декабря 2019, 11:28
Попробовал выполнить пример №1 и выдает ошибку "java.lang.NullPointerException".
Wahldemahr11 уровень, Харьков
9 декабря 2019, 19:44
Набрал ради интереса этот пример - у меня все нормально.
Евгений16 уровень, Минск
1 декабря 2019, 20:08
Коллекции зацепили.. С одной стороны не люблю, когда что-то из будущего задевают и никак не объясняют. С другой стороны, когда потом будет лекция про это, ты словно уже в теме и лишь заполняешь пробелы в знаниях. В целом, интересный подход.
Kubik_1315 уровень, Москва
27 ноября 2019, 15:13
а зачем в четвертом примере перекидывать числа из массива в список? не проще сразу брать из списка и раскидывать по чет/нечет?
Константин18 уровень, Москва
3 декабря 2019, 16:04
если у тебя есть данные изначально в массиве а список пустой, как ты их из списка возьмешь?
BariO16 уровень, Nizhniy Novgorod
4 января, 18:13
согласен с Kubik_13. можно сразу брать из массива. Список лишний
misha8 уровень, Улан-Батор
25 ноября 2019, 18:01
Непонятно: for (Integer x : result) Здесь неплохо описано
Aleksei10 уровень
16 ноября 2019, 17:20
В 5 примере не могу понять условие по синтаксису. for (Integer x : result) подчеркнутая часть
Aleksei10 уровень
17 ноября 2019, 15:02
Спасибо. Очень круто уменьшили код. Надеюсь будет еще тема про это.
progr8 уровень
31 октября 2019, 20:03
if (s.isEmpty()) break; что делает эта строчка? В чем ее суть?
Andriy Pikus17 уровень, Вараш
1 ноября 2019, 06:31
Она делает проверку ввел пользователь чтонибудь или оставил пустую строку и нажал ентер. Потому что если ничего не ввести дальше будет ошибка. Тут вместо брека можно делать цикл чтоб виводило на екран сообщения типа "введи чтонибудь" и возвращалось в начало (реадЛайн) пока он не введет чтото
14 ноября 2019, 10:37
Не надо там ничего писать-проверка на пустую строку делается лишь с целью прервать цикл и продолжить выполнение программы
AlinaAlina10 уровень, Санкт-Петербург
15 ноября 2019, 12:16
Даже в том случае, если этого логика требует? Ну вдруг задумано, что дальше ничего не случится, пока пользователь не ведёт что-нибудь...
16 ноября 2019, 19:33
Вы уж меня простите, но я не знаю, насколько извращенной должна быть логика, чтобы вместо перехвата ошибки или условного оператора делать проверку на пустую строку бесконечным циклом)