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

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

— Ага!

Комментарии (190)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Евгений12 уровень, Севастополь
воскресенье, 21:07
Я не понимаю, что такое эти дженерики и где они используются. Кто разбирается - подскажите, пожалуйста. Как я понимаю это классы обёртки для примитивных типов
Александр8 уровень, Краснодар
понедельник, 21:24
Если я правильно понял, то вот эти самые "классы обертки" позволяют запихнуть в ArrayList "невпихуемое". Что расширяет возможности для различных манипуляций с числами. Т.е. с Дженериками можно писать логику проще (если дело касается цифр), чем какими-то другими методами. Если я не правильно понял, то пожалуйста поправьте.
Rehau12 уровень
вчера, 10:13
Просто пользуйся тем что эти дженерики, по русски обобщения, указывают какой тип данных можно записывать в список (ArrayList). Для работы пока хватит. Обобщения будут актуальны для List, Map, Set Это такие скажем, разновидности массивов.
Alexander Taluevsky9 уровень, Минск
30 июня, 16:10
ребята, подскажите чем отличается
Integer x = list.get(i);
от
int x = list.get(i);
n10z7 уровень, Москва
4 июля, 19:59
Integer и int И, вопрос, что такое куча, она же Heap Стек и куча в Java
Rehau12 уровень
вчера, 10:15
Ничем не отличается. Это по моему называется автоупаковка.
Rehau12 уровень
вчера, 10:16
куча это адресное пространство памяти в котором размещаются объекты.А ссылки на объекты размещаются в стеке. В двух словах.
Василий18 уровень, Санкт-Петербург
23 июня, 19:55
Кто мучается с набиранием кода - Ctrl+A, Ctrl+C, Ctrl+V (или Cmd на маке) вам помогут.
Денис Лаптев9 уровень, Харьков
20 июня, 10:46
for (Integer x : result){} на сколько я понимаю, не только для коллекций, но и для массивов.
Artificial Intelligence16 уровень, Москва
26 июня, 12:49
Местный foreach. :)
Денис Лаптев9 уровень, Харьков
20 июня, 10:36
У меня такой вопрос. Если в данном цикле: for (int i = 0; i < list.size();) мы удалим какой-то элемент списка list, то выражение list.size() изменится или останется таким, какое оно было в начале работы цикла?
FireGames8 уровень, Львов
26 июня, 10:50
Я кстати тоже долго над этим думал. Скорее всего он после удаления любого элемента смещается и с каждой новой итерацией цикла опять проверяет количество "list.size()".
Rehau12 уровень
вчера, 10:17
Почитайте про итератор, там будет ответ на ваш вопрос.
Murzin Vitaliy9 уровень
16 мая, 06:22
не проходит валидацию!
Глеб9 уровень, Москва
15 мая, 11:58
что такое
(s.isEmpty())
Вадим17 уровень, Одесса
16 мая, 14:47
Проверка пустая ли переменная s if (s.isEmpty()) break; // Если переменная s пустая то происходит остановка цикла
Глеб9 уровень, Москва
16 мая, 17:31
спасибо
Андрей10 уровень, Москва
29 мая, 12:41
http://qaru.site/questions/1788862/difference-between-isempty-and-equals
Дмитрий12 уровень
8 мая, 19:58
Check IN
GigaMax12 уровень
6 мая, 19:24
+ готово)
Honest Sabbatini8 уровень
25 апреля, 11:40
//быстрый for по всем элементам, только для коллекций// Спасибо, это именно то уточнение, которое мы ждали. А лекция по коллекциям была? Или упоминание об их существовании и о том, что с этим надо самостоятельно ознакомиться?
Vladimir Dubrovsky8 уровень, Москва
13 мая, 14:40
Коллекции идут после 10 уровня. Сейчас мы только чуть коснулись их и всё. На данный момент они не нужны. Хочешь изучить - изучай, только ныть не надо.