• ,

Уровень 7: план уровня и доп. материалы

План уровня:
  • Массивы и списки: Array, ArrayList, знакоство с Generics
  • Массивы: создание, инициализация.
  • Работа с массивами, length.
  • Статическая и динамическая инициализация массива.
  • Список ArrayList, внутренняя реализация, отличие от массива.
  • Работа с ArrayList-ом. Методы add(value), add(index, value), remove(index), size()
  • Знакомство с Generics — использование
  • Сопоставление примитивных типов с их непримитивными аналогами-классами
  • Создание и использование параметризированных списков
  • Знакомство с Collections
  • Цикл for each

  • Курс Java

На этом уровне изучается обзор коллекций. Детальное углубленное изучение будет на 30+ уровнях.

Что еще можно посмотреть на досуге:
Удаление элементов из списка и ConcurrentModificationException
Примитивы и обертки
Немного о строках в Java
Основные методы для работы со String
Класс Collections

Почитать про массивы и списки



Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария.
Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения

Вернуться к обучению java онлайн на JavaRush

55 комментариев

Timur
Думаю стоит изменить рисунок чтобы для новичков было более понятнее:
Arrays
exis19ce
полностью согласен! долго думал что я что-то не так знаю о массивах, а оказалось картинка не совсем корректная
tarrus
где лекции.
Sant9Iga
здесь описывается какие темы были рассмотрены в 7 уроке + дополнительные материалы.
IvanDurov
*знакоМство с Generics
Predict_it
Скучаю по котам в java при объяснениях =(
hijack
Давай тебя запихаем в коробку и будем по тебе изучать java?
Hopping
А как вы относитесь к театру Куклачева?
hijack
Это зависит напрямую от того, что у них за кулисами творится. А вы работаете в этом театре?
вы то я надеюсь способны выучить java без котов?
Hopping
iddqd
У вас какие-то проблемы с котиками? Весь javarush (как и другие варианты типа codecombat etc) построен в более-менее игровой манере. Так люди лучше запоминают. Вариант с котами тоже вполне неплох.
Multmaniac
Задача на ArrayList идет ДО темы сабжа. Может в этом есть какой-то скрытый смысл, но разве не лучше давать задачу после теоретического материала? И с поиском минимального из 5 чисел была такая же история… Создавать over9000 условий, чтобы через несколько тем понять, что задача решается в несколько строчек с помощью массива.
hubert
Именно для этого: чтобы понять, что решается проще.
Predict_it
Почуствовать это ужасное чувство и больше к нему не возвращаться. В sql тоже аутисты некоторые вручную вводят данные, хотя можна пользоваться от силы 10 операторами и быть счастливым.
Naissur
Базовые алгоритмы тоже изучают, хотя их уже давно можно вызывать одним оператором. Делается это для того, чтобы ты понимал принципы и учился самостоятельно думать.
Troy
вот что заставляет улыбнуться www.youtube.com/watch?v=ywWBy6J5gz8
bratva8889
Извините где найти лекции? У меня ничего не показывает.
Goodpupil
я потихоньку иду вперёд.
mTihiy
В лекции написано, что размер ArrayList увеличивается в 2 раза если нет места для добавления нового элемента. В обсуждении лекции 8 предлагаются ссылки на доп.материал, где указано, что размер увеличивается в 1,5 раза.
Для понимания принципа, думаю нет разницы. Но все же, какое из значений ближе к истине?
Попробовал разобраться в исходной документации, самому не удалось найти явного описания увеличения.
zibul444
(oldCapacity * 3) / 2 + 1 — на один элемент больше чем в 1.5 раза)) то есть присутствует доля правды и там и там)))
На работе это ни как не сказывается, т.к. size возвращает количество используемых элементов…
haromets
Может кто-нибудь объяснить, почему в примере «Удаление всех чисел больше 5» в операторе for убрали увеличение i внутри цикла, а увеличение всё равно идет когда число больше 5 ????! т.е. там стоит оператор if и если число больше 5 то идёт удаление числа и цикл должен остановиться, а увеличение i должно происходить только когда число меньше или равно 5. Но увеличение i происходит в обоих случаях!!! ??
dimaMJ
  • dimaMJ
  • +2
  • Комментарий отредактирован 2015-03-20 00:57:12 пользователем dimaMJ
вы не разобрались с коллекциями) смотрите для чего это сделано, у нас есть 5 элементов, которые мы добавили в список, мы должны удалить элементы значение которых больше 5.
i не увеличивается в обоих случаях это не так, его увеличение происходит только в блоке else. Когда найден элемент больше 5, происходит его удаление, вот смотрите
Индекс — Значение
0 — 3
1 — 7
2 — 2
3 — 4
4 — 3
5 — 1
//У нас есть один элемент (1) со значением 7, его нужно удалить и вот таким будет список после удаления 7
0 — 3
1 — 2
2 — 4
3 — 3
4 — 1
//То есть после удаления элемента, на его место становится элемент который находится выше, если таков есть.
И в этом случае если после удаления мы увеличим i, мы перепрыгнем элемент, для этого i не становится больше если элемент удален, потому что на его место становится другой, не забывайте когда вы удаляете элемент, на его место становится сосед у которого индекс больше, если допустим вам нужно найти элемент со значением 7 и если нашли утроить его, вам нужно понимать что после него добавится еще две 7 и i необходимо будет увеличить на 3 позиции вверх, чтобы не возникло бесконечного цикла.
haromets
Спасибо за ответ,
для этого i не становится больше если элемент удален, потому что на его место становится другой, не забывайте когда вы удаляете элемент, на его место становится сосед у которого индекс больше
это я знаю, просто не думал, что при этом цикл for срабатывает. или он не срабатывает? а просто в операторе if происходит две операции сразу: 1-ая удаление элемента, и сразу же на место этого элемента становится другой и он типа уже меньше 5 и идет else?
dimaMJ
Представьте список как множество вагонов которые должны быть всегда связаны между собой) Если нам нужно удалить второй вагон, мы отсоединяем его от первого и третьего и убираем, а так как вагоны должны быть всегда связаны, третий вагон мы соединяем с первым и он уже становится естественно не третьим, а вторым :)Так будет легче все понять
Denis444
Многовато лекций на английском… Я так понимаю английский и так, и так учить придется?
Dukuu_
ДА, английский (как минимум на уровне чтения тех.документации) — обязательно подтягивай. Пригодится при трудоустройстве и особенно в работе.
hubert
А ничего, что код пишется тоже на английском?
Учите 1С — пишите на православном.
Denis444
Я может конечно еще только до 11 уровня дошел, но читать код и уметь читать на английском(т.е. знать весь перевод на русский) по моему это разные вещи… Я как бы все равно собирался учить английский, просто размышлял с чего начать. С английского, а потом java или учить джаву, ту что есть на русском, а потом уже инглиш…
onkf
Английский не надо учить. Просто читайтечитайтечитайтечитайте техническую литературу на English, потихоньку кидайте в словарь незнакомые слова. Само запомнится. Смотрите English фильмы с титрами (сначала русскими, потом аглицкими). 1-2 года и читать и слухать вы будете великолепно (разговорный это все же другое). Язык — это не цель, язык — это средство. Используйте его, пусть ни хрена не получается, продолжайте, навык постепенно будет улучшаться.
onkf
Вы что-то знаете о языке платформы 1С: Предприятие? И при чем тут «пишите на православном»?
FixerFixer
-Я хочу стать программистом, с какого языка мне начать?
-С английского.
bezobid
у меня одного в этой статье вместо примеров кода такая ерунда? Тоже код конечно, но не тот…

blizzard
нет, у меня тоже. Че-то там с версткой.
snuk
Это не верстка. Это плагин highlighter. У меня он тоже не работает, точнее выдает такой же html код верстки. Не знаю как поправить, чтобы отображалось верно, но чтобы прочитать что там «зашифровано/закодировано», берется этот код, заталкивается в txt файл, сохраняется в расширении .html и открывается браузером. Результатом будет подсвеченный синтаксис java кода.
snuk
  • snuk
  • 0
Массивы: создание, инициализация(из лекции)
В линке в статье ошибка. А именно:
for (int i = 0; i < a. length; i++ System.out.println (a[i]);
Неверно. В условие цикла компилятор не принимает подобного, но можно сделать так:
for (int i = 0; i < result.size(); i++) System.out.println(result.get(i));
Но это может привести к ухудшению читабельности.
Pegas
В чем отличие
{
String d = list.get(i);
list.add(i,d);
}

от
{list.add(i,list.get(i));}

Дело в том, что при первом варианте кода программа работала правильно, а при втором варианте — нет. Вопрос: почему list.get(i) нельзя сразу вставить в функцию list.add?
mrserfr
  • mrserfr
  • +1
  • Комментарий отредактирован 2016-01-07 14:40:45 пользователем mrserfr
Отличий нет, должно быть все одинаково. Полный код выложи, может с ним связано, что корректно у тебя не отрабатывало
icewj
habrahabr.ru/post/128269/

Полезная статья про списки.
JohnnyMad
Вот тут есть маленькая ошибка, надо бы исправить чтобы не путать новичков. Спасибо

level07.lesson05. Последний код
Krok
  • Krok
  • 0
  • Комментарий отредактирован 2016-02-19 22:54:09 пользователем Krok
Доброго времени суток! На 7-м уровне, в плане лекции, анонсирован цикл for each, дошел до lesson 12 (задачи от капитана Боброва), но упоминания цикла for each не увидел…
Комментарий в 5-м примере lesson 8: "//быстрый for по всем элементам, только для коллекций" — это оно?

for (Integer x: result) //быстрый for по всем элементам, только для коллекций
{
System.out.println(x);
}
vlad55
Сортировка массива.очень полезная ссылка
study-java.ru/uroki-java/urok-11-sortirovka-massiva/
sunchoss
а где сама лекция? вижу только содержание
curlymike
Я тоже.
KirillLB
  • KirillLB
  • 0
  • Комментарий отредактирован 2016-05-20 12:18:24 пользователем KirillLB
Не до конца понял решение (по комментариям) проблемы описанной здесь stackoverflow.com/questions/223918/iterating-through-a-collection-avoiding-concurrentmodificationexception-when-re

Может кто-то пояснить?
teacher5555
  • teacher5555
  • 0
  • Комментарий отредактирован 2016-06-21 21:39:39 пользователем teacher5555
Судя по всему проблема в том, что тот способ удаления элемента из коллекции, указанный автором, является некорректным. Чуть ниже товарищи предложили решение

for (Iteratoriterator = list.iterator(); iterator.hasNext();) {
String string = iterator.next();
if (string.isEmpty()) {
// Remove the current element from the iterator and the list.
iterator.remove();
}
}

как я понял использующее интерфейс Iterator. В итоге я код переписал так:

for (int i = 0; i < 10; ++i) {
l.add(4);
l.add(5);
l.add(6);
}
for (Iteratoriterator = l.iterator(); iterator.hasNext();) {
Integer num = iterator.next();
if (num == 5) {
// Remove the current element from the iterator and the list.
iterator.remove();
}
}

System.out.println(l);
}

После чего компилятор удалил все «5» из коллекции и вывел на экран, что осталось, что и требовалось.

В итоге, что хотели от нас парни из JavaRush:
1) Обратить внимание, что есть крутой сайт stackoverflow.com/
2) Учить английский ))
3) Запустить код автора вопроса и посмотреть что будет
4) Немного покурить тему интерфейсов, коллекций (мы это ещё будем проходить) и попробовать исправить код автора. Пока до деталей не понятно, но идея ясна.
AleksKosmonavt
прикольнгое видео по сортировке массивов:
study-java.ru/uroki-java/urok-11-sortirovka-massiva/
youtu.be/lyZQPjUT5B4
youtu.be/Ns4TPTC8whw
kterrita
public class MainClass
{
    public static void main(String[] args) 
    {
        int[] numbers = new int[10];

        for (int i = 0; i < numbers.length; i++)
        {
           numbers[i] = 9 - i;
        }
    }
}


По-моему тут баг, пробовал и копипастом и вручную.
cold-f
https://youtu.be/87pm79sPSvc — видео, которое мне наглядно объяснило, что такое дженерики, и какие там есть подводные камни.
firstprime
Cпс. Видео зашло норм). Из урока на сайте сложилось впечатление, что дженерики это какая-то редко используемая фигня. Видео исправляет это заблуждение. Бонусом введение в коллекции. В общем рекомендую к просмотру.
Skiff
На текущий момент в Java Syntax 7 уровень, 5 лекция. Везде по ходу текста ошибка при объявлении списка.
ArrayList list = new ArrayList();
то есть без указания типа. Должно же быть
ArrayList<String> list = new ArrayList<String>();


Будучи новичком попался на этом измучив вдоль и поперек следующие две задачи, пока не подсказали.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.