JavaRush/Java блог/Архив info.javarush/Уровень 8: план уровня и доп. материалы
hubert
41 уровень

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

Статья из группы Архив info.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+ уровнях.

Курс Java
Что еще можно посмотреть на досуге: Почитать про коллекции Статья на хабре про ArrayList Статья на хабре про LinkedList http://habrahabr.ru/post/128017/ Пример удаления записей из мапы: 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()); }
Нашли классную ссылку к материалу данной темы? Добавьте ее сюда в виде комментария. Возможно, именно Ваша ссылка поможет другому человеку стать программистом и улучшить свою жизнь!

Вернуться к плану обучения
Вернуться к обучению
java онлайн
на JavaRush
Комментарии (93)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Max257-2
Уровень 20
8 августа 2018, 16:34
Альтернативная конструкция удаления из Map, без необходимости её копировать. Iterator<Map.Entry<>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { if (iterator.next().getValue() [условие]){ iterator.remove(); } } Имхо более понятное и простое чем от Профессора.
Александр
Уровень 16
5 августа 2018, 18:54
Ребята, а может кто-нибудь объяснить, как не засыпать, когда читаешь теорию?)) Реально проблема!))
RTwo Dtwo
Уровень 17
13 августа 2018, 10:36
Пей кофе или чифирь
Александр
Уровень 16
16 августа 2018, 17:26
на меня напитки не действуют
RTwo Dtwo
Уровень 17
17 августа 2018, 10:40
Бегай по утрам. Если не понимаешь какое либо слово ищи определение. Иногда непонятное слово приводит к тому, что ты перестаёшь понимать о чем идет речь и мозг выключается и ты засыпаешь. Пытайся визуализировать прочитанное. Это очень важно для того, чтобы вырабатывать абстрактное мышление.
Konstantin
Уровень 22
19 июля 2018, 17:30
Java Collections: http://www.baeldung.com/java-collections
1 июля 2018, 12:20
Кто может заапрувить безопасность init.ru? Ато хром его чет не особо любит
Евгений
Уровень 22
26 июня 2018, 16:13
Вот гад этот профессор! Еслиб конструкцию про удаление мапы сразу в лекции положил с объяснением - я б часа 3 сэкономил...
Taras Sharlay
Уровень 18
10 июля 2018, 20:35
Эт точно! Я бы часов 8 не потратил на метод проб и ошибок, т.к. четкой инфы в инете не нашел.
Evgeny K
Уровень 18
17 июня 2018, 14:19
Почитать про коллекции Что-то не открывается
Filippov Sergey
Уровень 36
19 июня 2018, 13:12
+1
Alex B
Уровень 13
23 июля 2018, 18:55
старая ссылка Интуита
Rihard1985
Уровень 33
Master
3 июня 2018, 16:44
Старый чушок этот профессор)) извините за мой французский)
Dimidrolus
Уровень 13
19 января 2017, 03:48


ребята, а почему в связном списке вставка елемента быстрая? ведь если будет список длиной 9999 елементов, а надо вставить на позицию 4000, то надо будет пройтись по списку 4000 раз от начала, так почему же вставка быстрая??? что то меня это сбивает с толку
velis
Уровень 32
20 января 2017, 12:51
Операция вставки заключается не только в нахождении 4000-го элемента, но и в добавление на его место нового элемента. А соотвественно все элементы за ним (включая и сам 4000) нужно будет переместить на одну позицию в конец списка. И вот эта вторая часть у LinkedList будет произведена гораздо быстрее чем у ArrayList
Dimidrolus
Уровень 13
20 января 2017, 14:19
а зачем их двигать? поменяли ссылки на соседние, увеличили сайз на один и все. это ж не массив, там нет разномерированного порядка? или как?
velis
Уровень 32
17 января 2017, 10:13
Не понятно почему во всех примерах указано создание объектов через родительский класс?
Set<String> set = new HashSet<String>();
List<String> list = new ArrayList<String>();
Map<String, String> map = new HashMap<String, String>();

Почему нельзя сразу указывать конкретный класс коллекции?
HashSet<String> set = new HashSet<String>();
ArrayList<String> list = new ArrayList<String>();
HashMap<String, String> map = new HashMap<String, String>();
Сергей Нигериш
Уровень 18
4 июля 2018, 14:18
Указывая конкретный класс коллекции, ты себя ограничиваешь только этим классом. Создавая объект через родительский класс, можно потом использовать другие коллекции данного родительского класса.
Роман Кончалов
Уровень 28
Expert
20 июля 2018, 11:15
Так это не родительский класс - это интерфейсы.
kostia_bondarenko
Уровень 40
7 января 2017, 23:11
Почему везде написано «если ты собираешься вставлять (или удалять) в середину коллекции много элементов, то тебе лучше использовать LinkedList». Но а по факту, если мы добавляем элементы в середину большого списка, то через ArrayList все быстрей.
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

/* Измерить сколько времени занимает 10 тысяч вставок для каждого списка
Измерить, сколько времени занимает 10 тысяч вставок для каждого списка.
Метод getTimeMsOfInsert  должен вернуть время его исполнения в миллисекундах.
*/

public class Solution {
    public static void main(String[] args) {
        System.out.println(getTimeMsOfInsert(new ArrayList()));
        System.out.println(getTimeMsOfInsert(new LinkedList()));
    }

    public static long getTimeMsOfInsert(List list) {
        for (int i = 0; i < 100000; i++) {
            list.add(0, new Object());
        }
        Date now = new Date();//напишите тут ваш код

        insert10000(list);

        Date nowafter = new Date();//напишите тут ваш код

        return nowafter.getTime() - now.getTime();
    }

    public static void insert10000(List list) {
        for (int i = 0; i < 10000; i++) {
            list.add(list.size() / 2, new Object());
        }
    }
}
kostia_bondarenko
Уровень 40
7 января 2017, 23:12
Вывод
"C:\Program Files\Java\jdk1.7.0_79\bin\java" -Didea.launcher.port=7534 "-Didea.launcher.bin.path=C:\Program Files\JetBrains\IntelliJ IDEA 2016.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.7.0_79\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\access-bridge.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\jfxrt.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_79\jre\lib\rt.jar;D:\Документы\Костя\JavaRushHomeWork\out\production\JavaRushHomeWork;C:\Program Files\JetBrains\IntelliJ IDEA 2016.3\lib\idea_rt.jar" com.intellij.rt.execution.application.AppMain com.javarush.test.level08.lesson06.task03.Solution
108
1706

Process finished with exit code 0