План уровня:
На этом уровне изучается обзор коллекций. Детальное углубленное изучение будет на 30+ уровнях.
Что еще можно посмотреть на досуге:
Удаление элементов из списка и ConcurrentModificationException
Примитивы и обертки
Немного о строках в Java
Основные методы для работы со String
Класс Collections
Почитать про массивы и списки
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
- Массивы и списки: Array, ArrayList, знакоство с Generics
- Массивы: создание, инициализация.
- Работа с массивами, length.
- Статическая и динамическая инициализация массива.
- Список ArrayList, внутренняя реализация, отличие от массива.
- Работа с ArrayList-ом. Методы add(value), add(index, value), remove(index), size()
- Знакомство с Generics - использование
- Сопоставление примитивных типов с их непримитивными аналогами-классами
- Создание и использование параметризированных списков
- Знакомство с Collections
- Цикл for each
На этом уровне изучается обзор коллекций. Детальное углубленное изучение будет на 30+ уровнях.
Что еще можно посмотреть на досуге:
Удаление элементов из списка и ConcurrentModificationException
Примитивы и обертки
Немного о строках в Java
Основные методы для работы со String
Класс Collections
Почитать про массивы и списки
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению java онлайн на JavaRush
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
ЗЫ Хотя… что по вашему означает «времени исполнения»? Они все возникают во время исполнения программы.
ЗЫ какую-то странную демагогию развели на пустом месте
то есть без указания типа. Должно же быть
Будучи новичком попался на этом измучив вдоль и поперек следующие две задачи, пока не подсказали.
Может кто-то пояснить?
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) Немного покурить тему интерфейсов, коллекций (мы это ещё будем проходить) и попробовать исправить код автора. Пока до деталей не понятно, но идея ясна.
study-java.ru/uroki-java/urok-11-sortirovka-massiva/
от
Дело в том, что при первом варианте кода программа работала правильно, а при втором варианте — нет. Вопрос: почему list.get(i) нельзя сразу вставить в функцию list.add?
В линке в статье ошибка. А именно:
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));
Но это может привести к ухудшению читабельности.
Учите 1С — пишите на православном.
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 позиции вверх, чтобы не возникло бесконечного цикла.
Для понимания принципа, думаю нет разницы. Но все же, какое из значений ближе к истине?
Попробовал разобраться в исходной документации, самому не удалось найти явного описания увеличения.
На работе это ни как не сказывается, т.к. size возвращает количество используемых элементов…