JavaRush /Курсы /Java Syntax /Примеры по ArrayList и Generics

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

Java Syntax
7 уровень , 8 лекция
Открыта
Примеры по 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 в коллекцию нечетных чисел
    }
}
7
Задача
Java Syntax Pro, 7 уровень, 8 лекция
Недоступна
Айтишный релакс
Нет ничего лучше, чем посмотреть интересное полезное видео... и получить за это кучу черной материи!

— Пример 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);
    }
}

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

— Ага!

Комментарии (459)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
PANDA Уровень 8
10 ноября 2024
В примере 4
Віктор Уровень 17
6 октября 2024
для тех кто будет изучать данный раздел Пример 4. Разделение массива на два — чётных и нечётных чисел в коде присутствует < что следует читать как открывающая угловая скобка < , если кто читает из редакторов просьба поправить
Perl Developer Уровень 1
1 февраля 2023
Хэши в Perl удобнее организованы чем списки в Java
Dmitry Уровень 26
3 февраля 2023
$Почему $ты $перед $каждым $словом $не $ставишь $$?
Perl Developer Уровень 1
4 февраля 2023
Даже не напоминай мне... (((
AMIGO_2022_11_09 Уровень 17
18 ноября 2022
Ох уж этот Диего!
treedeevada Уровень 16
1 июля 2022
В этой статье разве используются generics?
Benjam1nBTN Уровень 24
19 августа 2022
Да, ArrayList
Nikita Prokaev Уровень 23
30 июня 2022
В первых трех примерах хотелось бы увидеть, как они решат вопрос с крашем программы, если ввести что-либо, кроме целочисленных значений. Например число с плавающей точкой,текст, символ. Немного покопался, пока сложилось мнение, что это не так просто. Пытался изобразить решение в формате:

if (введенная строка == целочисленное значение без пробелов) true;
Но не нашел такого готового удобного оператора для правой части условия в каком-нибудь из существующих пакетов. Может оно и есть, но я не разобрался, мал да зелен еще)) В общем, если кто-нибудь разложит, ради интереса, какой-нибудь рабочий вариант - с меня плюсик)
Иван Уровень 23
13 июля 2022
аналогичный вопрос, как проверить, что передомной символ/строка, а не цифры?
Benjam1nBTN Уровень 24
19 августа 2022
Буквально совсем недавно проходили оператор instanceof, можно его использовать
Perl Developer Уровень 1
1 февраля 2023

try / catch
Anna Уровень 28
24 марта 2022
for (Integer x : result) //быстрый for по всем элементам, только для коллекций { System.out.println(x); } Почему только для коллекций? для массивов же тоже работает?
partiec Уровень 33
10 декабря 2022
массив тож коллекция
Egor Kurilko Уровень 7
22 марта 2022
Объясните пожалуйста, при вводе чисел с клавы, зачем вот этот участок кода?


    while (true)
    {
        String s = reader.readLine();
        if (s.isEmpty()) break;
        list.add(Integer.parseInt(s)); // с этой строкой все понятно
    }
Спасибо
Николай Уровень 24
2 апреля 2022
Если я не ошибаюсь, проверяется условие на пустую строку, если строка пустая, то цикл завершается.
Рыбалко Иван Уровень 36
14 февраля 2022
Alyona S Уровень 12
13 февраля 2022
Почему в примерах переменные объявляются внутри циклов? Ведь получается что переменная будет объявляться при каждой новой итерации цикла, т.е. несколько раз. Разве это верно?
Ilya Capercaillie Уровень 29
18 марта 2022
Внутренняя переменная цикла так и работает, видна только внутри цикла.
Alyona S Уровень 12
20 марта 2022
Она видна внутри цикла, но объявляться всё равно должна только один раз, а не на каждом витке цикла.
Ilya Capercaillie Уровень 29
20 марта 2022
нет, переменные есть разные, нужны для разных задач. х каждый раз внутри цикла: 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 в коллекцию нечетных чисел } есть и снаружи цикла. гугли переменные, и их видимость.
partiec Уровень 33
10 декабря 2022
ну если так надо человеку:)