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

Примеры по 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 в коллекцию нечетных чисел
    }
}
7
Задача
Java Syntax Pro Beta,  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);
    }
}

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

— Ага!

Комментарии (447)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
PANDA Backend Developer
10 ноября 2024, 20:11
В примере 4
Віктор
Уровень 17
6 октября 2024, 18:39
для тех кто будет изучать данный раздел Пример 4. Разделение массива на два — чётных и нечётных чисел в коде присутствует < что следует читать как открывающая угловая скобка < , если кто читает из редакторов просьба поправить
Perl Developer Perl Developer
1 февраля 2023, 16:28
Хэши в Perl удобнее организованы чем списки в Java
DmitryStudent в Home
3 февраля 2023, 22:38
$Почему $ты $перед $каждым $словом $не $ставишь $$?
Perl Developer Perl Developer
4 февраля 2023, 11:24
Даже не напоминай мне... (((
AMIGO_2022_11_09
Уровень 17
18 ноября 2022, 17:39
Ох уж этот Диего!
treedeevada
Уровень 16
1 июля 2022, 09:52
В этой статье разве используются generics?
Benjam1nBTN
Уровень 24
19 августа 2022, 20:36
Да, ArrayList
Nikita Prokaev
Уровень 23
30 июня 2022, 09:21
В первых трех примерах хотелось бы увидеть, как они решат вопрос с крашем программы, если ввести что-либо, кроме целочисленных значений. Например число с плавающей точкой,текст, символ. Немного покопался, пока сложилось мнение, что это не так просто. Пытался изобразить решение в формате:
if (введенная строка == целочисленное значение без пробелов) true;
Но не нашел такого готового удобного оператора для правой части условия в каком-нибудь из существующих пакетов. Может оно и есть, но я не разобрался, мал да зелен еще)) В общем, если кто-нибудь разложит, ради интереса, какой-нибудь рабочий вариант - с меня плюсик)
Иван
Уровень 23
13 июля 2022, 18:24
аналогичный вопрос, как проверить, что передомной символ/строка, а не цифры?
Benjam1nBTN
Уровень 24
19 августа 2022, 20:40
Буквально совсем недавно проходили оператор instanceof, можно его использовать
Perl Developer Perl Developer
1 февраля 2023, 16:29
try / catch
Anna
Уровень 28
24 марта 2022, 10:59
for (Integer x : result) //быстрый for по всем элементам, только для коллекций { System.out.println(x); } Почему только для коллекций? для массивов же тоже работает?
partiec
Уровень 33
10 декабря 2022, 09:35
массив тож коллекция
Egor Kurilko
Уровень 7
22 марта 2022, 17:23
Объясните пожалуйста, при вводе чисел с клавы, зачем вот этот участок кода?
while (true)
{
    String s = reader.readLine();
    if (s.isEmpty()) break;
    list.add(Integer.parseInt(s)); // с этой строкой все понятно
}
Спасибо
Николай
Уровень 24
2 апреля 2022, 16:50
Если я не ошибаюсь, проверяется условие на пустую строку, если строка пустая, то цикл завершается.
Alyona S
Уровень 12
13 февраля 2022, 19:13
Почему в примерах переменные объявляются внутри циклов? Ведь получается что переменная будет объявляться при каждой новой итерации цикла, т.е. несколько раз. Разве это верно?
Ilya Capercaillie
Уровень 29
18 марта 2022, 09:53
Внутренняя переменная цикла так и работает, видна только внутри цикла.
Alyona S
Уровень 12
20 марта 2022, 14:11
Она видна внутри цикла, но объявляться всё равно должна только один раз, а не на каждом витке цикла.
Ilya Capercaillie
Уровень 29
20 марта 2022, 20:39
нет, переменные есть разные, нужны для разных задач. х каждый раз внутри цикла: 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, 09:39
ну если так надо человеку:)
Деня
Уровень 2
6 февраля 2022, 04:13
Прочел несколько комментов и похоже только я не понял. - кто такой дженерик? как пишут... — Когда мы объявляем generic-переменную, то мы указываем не один тип, а два: тип переменной и тип данных, которые она у себя хранит.
ArrayList<String> list = new ArrayList<String>();
т.е. сама переменная list и есть дженерик т.к. она типа ArrayList хранит в себе тип String?
Alyona S
Уровень 12
13 февраля 2022, 19:11
Да. Обычно для переменной указывается только один тип, который можно отнести и к переменной, и к данным (в переменную типа String ты можешь записывать только строки). Для дженериков указывается 2 типа - тип самой переменной отдельно и тип данных отдельно. В данном случае тип переменной ArrayList, а данные должны иметь тип String.
Максим
Уровень 22
Expert
25 августа 2023, 12:49
ArrayList - тип переменной <String> - тип данных которые в себе хранит
Деня
Уровень 2
9 октября 2023, 04:39
я написал не тоже самое?
Максим
Уровень 22
Expert
10 октября 2023, 11:45
тоже 🤓