План уровня:
На этом уровне изучается обзор коллекций. Детальное углубленное изучение будет на 30+ уровнях.
Что еще можно посмотреть на досуге:
Почитать про коллекции
Статья на хабре про ArrayList
Статья на хабре про LinkedList
http://habrahabr.ru/post/128017/
Пример удаления записей из мапы:
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению на JavaRush
- Коллекции: LinkedList, HashSet, HashMap. Date - дата.
- Коллекции Set - множество, List - список, Map - словарь (или карта).
- List -> ArrayList, LinkedList, Vector, Stack.
- Set -> HashSet, TreeSet, SortedSet.
- Map -> HashMap, TreeMap, SortedMap, Hashtable.
- Отличие реализаций
- Работа с итераторами Iterator. Методы hasNext(), next()
- Map.Entry. Методы getKey(), getValue()
- Работа с датой - класс Date.
На этом уровне изучается обзор коллекций. Детальное углубленное изучение будет на 30+ уровнях.

Map map = new HashMap<>();
map.put("1", "2");
map.put("3", "4");
Map mapCopy = new HashMap<>(map);
for(Map.Entry pair : mapCopy.entrySet()) {
map.remove(pair.getKey());
}
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!
Вернуться к плану обучения
Вернуться к обучению на JavaRush
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
ребята, а почему в связном списке вставка елемента быстрая? ведь если будет список длиной 9999 елементов, а надо вставить на позицию 4000, то надо будет пройтись по списку 4000 раз от начала, так почему же вставка быстрая??? что то меня это сбивает с толку
Почему нельзя сразу указывать конкретный класс коллекции?
Это же интерфейсы. Или я что-то неправильно понял.
Правильно удалить все вхождения cats можно так:
А как сделать не всех сразу, а по одному?
В этом случае надо сделать цикл cats (перебирающий все его элементы) внутри которого вызвать pets.remove
а ля
P.S. Все это будет дальше объяснено по ходу курса.
Пробовал из примеров с урока в Eclipse:
Для всех set получаю вот такую штуку: «The method setHours(int) from the type Date is deprecated».
При этом код выполняется.
Почему так происходит?
В гуглах наткнулся на вариант использования класса CALENDAR — стоит ли его использовать постоянно или использовать методы set?
Оттуда же, @deprecated означает следующее:
Вообще с датами в Java немного запутанно, но со временем проясните. Более подробно habrahabr.ru/post/274811/
Сразу все вопросы прояснятся.
обычно levelX.lessonY.taskZ
— и там напишите, если нет такой — создайте по аналогии.
И в продолжение ч.2
ссылка
И стоит ли вообще использовать? Я обошелся 2 циклами и копией мапы. Искал на форуме пример использования этого метода и не нашел.
Этот топик — дополнительный материал к лекции
И вот здесь стало интересно, зачем повторно инициализировать итератор (it = al.iterator();) когда он был создан и инициализирован ранее (Iterator it = al.iterator()). Попробовал закоментить вторую инициализацию и IDEA выдала Exception.
Получается что каждый раз при изменении (добавлении/удалении элементов) Мапы, Листа и т.д. нужно каждый раз инициализировать итератор!
Помните вот этот пример в доп. лекциях 7 уровня?
Здесь на каждом шаге итерации в цикле for происходит его инициализация. Поэтому ошибки не происходит.
А в этом примере, когда мы неявно используем итератор, мы его инициализируем один раз!!! Потом удаляем элемент и пытаемся снова пройти итерацию, но так нельзя, итератор нужно снова инициализировать!
Хотя ничего не мешает сейчас почитать про класс Calendar например. Потому что задачи с его использованием будут встречаться и задолго до 40 уровня.
b
A
a
B,
то результат сортировки будет следующим:
A
B
a
b,
что нельзя назвать алфавитным порядком.
Было бы неплохо, если бы рассмотрели другой способ обращения с датами.
почему, то бы пропарсить «человеческую дату», необходимо учесть "-1 месяц"
а хотелось бы
И не всегда будет возможность заменить устаревший Date на Calendar или OffsetDateTime
Структуры данных в картинках. HashMap
Set указывает на то, что объект, путь к которому хранит перемення set типа Set, будет видеть только те методы и поля, которые доступны типу Set, а HashSet — объект будет использовать переопределенные методы Set (если метод не переопределили — то он будет использовать метод Set).
Здесь есть еще один такой интересный момент, что объект не будет видеть методы HashSet, он видит только методы Set.
Объявление и инициализаци такого рода записи используеться в полиморфизме (лекция 12)
На скриншотах я попытался изобразить то, что описывал выше:
На первом скрине изображено 2 класа Man и Woman (Woman наследуеться от Man), и создается объект: Man woman = new Woman().
На втором скрине видно, что объект, на который ссылаеться перменная woman, видит только методы Man, а методы Woman (public void makeup()) ему неизвестны.
В общем тут или мобильность в плане перевода в любой тип класса Set, но урезаем возможности конкретного типа, или на оборот!
Но я в общем случае имел в виду вот это:
class Useful {
public void f() {}
public void g() {}
}
class MoreUseful extends Useful {
public void f() {}
public void g() {}
public void u() {}
}
public class RTTI {
public static void main(String[] args) {
Useful[] x = {
new Useful(),
new MoreUseful()
};
x[0].f();
x[1].g();
// Стадия компиляции- метод не найден в классе Useful:
//! x[1].u();
((MoreUseful)x[1]).u(); // Нисх. преобразование
((MoreUseful)x[0]).u(); //Происходит исключение
}
}
for(int i = 0; i<x.length; i++) {
if (x[i] instanceof MoreUseful)
{
((MoreUseful)x[i]).u
}
}
слева пишем переменную, а справа её тип. результат boolean)
в 1 случае он сработает, во 2 нет)