Тёмный

Java. Об Iterator и Iterable c примерами. 

Sergey Arkhipov Java Tutorials
Подписаться 20 тыс.
Просмотров 23 тыс.
50% 1

В данном видео объясняется что такое паттерн Iterator и интерфейс Iterable в языке программирования Java. На примерах показывается для чего нужен Iterator и как его использовать. Рассматривается так же вопрос удаления и вставки элементов в LinkedList за константное время.
Исходники для видео:
github.com/Arhiser/java_tutor...
Поддержать канал💰:
yoomoney.ru/to/410018856244871
Наша группа в Telegram:
t.me/ArhiTutorials
#ArhiTutorialsJava #ityoutubersru

Опубликовано:

 

21 окт 2021

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 66   
@shaporen8114
@shaporen8114 8 дней назад
Сергей, большая вам благодарность! Вы очень четко, последовательно и понятно объясняете материал! Успехов вам во всем!
@silendor6936
@silendor6936 2 года назад
То, что в for можно не только коллекцию использовать, было довольно интересно.
@hetken_in_sorrow
@hetken_in_sorrow 29 дней назад
Спасибо за наглядность.
@user-jz8fg5nf7r
@user-jz8fg5nf7r Год назад
Ценю ваши видео за то, что рассказываете суть языка и всякие подводные камешки, очень полезно!
@oleg12395
@oleg12395 2 года назад
Дай Бог тебе здоровья! Классно объяснил 👌
@artyomlosev1608
@artyomlosev1608 Год назад
Спасибо большое помогли разложить все по полочкам! Почему-то в книгах уделяют нексолько строк или совсем пропускают тему итератора. А штука то важная)) Как раз искал пример применения вне коллекции.
@eskelgarsio2998
@eskelgarsio2998 2 года назад
Спасибо за видео! Понятно объясняешь!
@yushchenkoalexey
@yushchenkoalexey Год назад
Сергей, спасибо! Прекрасные видео. Отблагодарил по ссылочке, как смог ;)
@arhitutorials
@arhitutorials Год назад
Получил. Большое спасибо!
@olegliakhovets8224
@olegliakhovets8224 2 года назад
Как всегда - очень интересно! Спасибо!
@The_Vict0r
@The_Vict0r Год назад
Отлично! Как всегда полезно и по существу. Отдельно порадовал метод "Ад" ))
@svalyavasvalyava9867
@svalyavasvalyava9867 2 года назад
спасибо за весь труд, вложенный в видео
@soulgambler961
@soulgambler961 11 месяцев назад
Спасибо, очень помогает на старте :)
@oleksii_shtanko
@oleksii_shtanko 2 года назад
Спасибо большое, хороший разбор
@vollyyaa
@vollyyaa 2 года назад
Спасибо за четкое и понятное объяснение)
@bilbojke1834
@bilbojke1834 Год назад
Отличное объяснение! Спасибо!
@konstantinvyazovchenko9451
@konstantinvyazovchenko9451 Год назад
Сергей спасибо, минимум воды, максимум по делу.
@user-mv2zq6zr9r
@user-mv2zq6zr9r 4 месяца назад
Красавчик!!!
@flyingdreamer7149
@flyingdreamer7149 2 года назад
Спасибо большое за видео!
@auratarus
@auratarus 2 года назад
супер просто и понятно! спасибо
@user-de8ll9gy9p
@user-de8ll9gy9p Год назад
Офигенно объяснил! Спасибо!
@user-ye6hp8fu3c
@user-ye6hp8fu3c Год назад
большое спасибо, доходчиво объяснили!
@cwnik
@cwnik 2 года назад
Полезная информация👍
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Год назад
Спасибо, полезные примеры
@mksmsmirnov
@mksmsmirnov Год назад
Спасибо за урок.
@savax2718
@savax2718 2 года назад
Спасибо за видео!
@heavenstunes1297
@heavenstunes1297 3 месяца назад
спасибо за полезные видео!
@cakeistrue
@cakeistrue 11 месяцев назад
Спасибо большое
@musamuradzade1606
@musamuradzade1606 11 месяцев назад
спасибо, очень полезная инфа)
@rooky2me
@rooky2me 2 года назад
ты реально крут :) Tnx!
@alexrychkoff7603
@alexrychkoff7603 Год назад
Круто всё объясняешь красавец
@mr_owls404
@mr_owls404 2 года назад
Спасибо!☺
@Mike-kb6vl
@Mike-kb6vl Год назад
мораль - всегда юзайте ArrayList
@user-dy1og7gb7o
@user-dy1og7gb7o 2 года назад
Супер!!
@user-jc3vv1vi2i
@user-jc3vv1vi2i 2 года назад
Спасибо
@user-de8ll9gy9p
@user-de8ll9gy9p Год назад
Подписка!
@igorsubbotin4791
@igorsubbotin4791 Год назад
6:50 после создания итератора до первого вызова next() итератор не указывает ни на какой элемент? И после первого вызова next() у нас появляется доступ к первому элементу, не ко второму?
@vb7038
@vb7038 2 года назад
А как получить такое оформление документации в idea?
@Light_Heavy
@Light_Heavy 2 года назад
Имели ввиду нет быстрого удаления в LinkedList? 6:13
@maxchatsky2898
@maxchatsky2898 2 года назад
Так оно и есть. Удалить быстрее, чем в дефолтной имплементации ArrayList "удалили-сдвинули", даже итератору не под силу)
@Mansurov1991
@Mansurov1991 Год назад
Правильно ли я понимаю, что при проходе по LinkedList циклом for(i)(не for(each)), то обращение к каждому элементу O(n), и в итоге получается общая сложность будет О(n2), а если итератором, то O(n), так как за проход сразу идём по элементам последовательно, а не каждый раз обращаемся к конкретному элементу?
@clipper1995N
@clipper1995N 10 месяцев назад
Ты немного запутался. Смотри: фишка с замедлением обусловлена методами set() и get() LnkedList-а, которые часто вызываются в циклое For-Each , и каждый раз каждый вызов этих методов заставляет обходить условно "всю" коллекцию со сложность O(n) на каждом шаге итерации в циклое For-Each
@caffeinejavacode1475
@caffeinejavacode1475 Год назад
Если мы хотим получить элемент за константное время из LinkedList то нужно использовать Iterator или O(1) работает только когда нам нужно именно перебрать елементы?
@arhitutorials
@arhitutorials Год назад
Из LinkedList нельзя получить произвольный элемент за O(1) . По этому имеет смысл использовать его для организации очереди или стека. То есть, когда произвольный доступ не нужен, а нужен доступ только к первому/последнему элементу и возможность удаления/вставки.
@user-lw9nu9ml8w
@user-lw9nu9ml8w 2 года назад
Все круто, а зачем Iterable отдельно нужен? Можно же обойтись только Iterator и его реализовывать или я не прав?
@arhitutorials
@arhitutorials 2 года назад
Iterable нужен для того, чтоб класс можно было использовать в операторе for. На одной коллекции может быть несколько итераторов, по этому коллекция не может быть итератором самой себя.
@user-eu8ov4mu9v
@user-eu8ov4mu9v 8 месяцев назад
Может кто подробнее объяснить почему итератор быстрее перебирает элементы в связанном списке?
@Grandik312
@Grandik312 2 года назад
Доброго времени суток! Объясните, пожалуйста, почему в следующем коде возникает исключение NoSuchElementException? public class Test { public static void main(String[] args) { ArrayList ints = new ArrayList(Arrays.asList(1, 2, 3)); ArrayList strings = new ArrayList(Arrays.asList("One", "Two", "Three", "four", "five")); Iterator iterInts = ints.iterator(); Iterator iterStrings = strings.iterator(); while(iterInts.hasNext()){ while (iterStrings.hasNext()){ System.out.println(iterInts.next() + " - " + iterStrings); } } } } Вроде как, должно сработать 3 внешних цикла (по 3 элементам в списке), а внутри каждого их них сработать какое-угодно число циклов (в зависимости от элементов внутри второго списка). Но почему-то возникает ошибка...
@arhitutorials
@arhitutorials 2 года назад
Итератор во внутреннем цикле один раз доходит до конца списка и в следующей итерации сразу выбрасывает исключение. Его ж нигде на начало списка не возвращают.
@Grandik312
@Grandik312 2 года назад
@@arhitutorials Теперь понятно, спасибо. А возвращать Iterator в начало, только его пересозданием: Iterator iterStrings = strings.iterator(); ?
@arhitutorials
@arhitutorials 2 года назад
@@Grandik312 Да, пересозданием. То же самое было бы и при использовании for(String str: strings) {} - тоже создается новый итератор.
@user-ri5ls2fg8p
@user-ri5ls2fg8p 2 года назад
Чувствую скоро будет компаратор и стримы))
@arhitutorials
@arhitutorials 2 года назад
Про компаратор уже есть: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-hqIXm7Ontdg.html Про стримы хочется что-нибудь оригинальное придумать, но пока идей нет. А просто повторять то, что сказано в документации, смысла не вижу.
@______________9358
@______________9358 2 года назад
У меня такой вопрос.Вот вы говорите(и везде так написано) ,что удаление элемента в LinkedList происходит за константное время с помощью итератора,но итератор же ходит по всем элементам,т.е. чем много элементов ,тем много времени требуется для нахождении и удалении,никак не могу понять этот момент,не могли бы объяснить???
@arhitutorials
@arhitutorials 2 года назад
За один проход можно удалить/вставить несколько элементов. Ну а если по одному элементу каждый раз искать в списке и удалять, то будет медленно.
@______________9358
@______________9358 2 года назад
@@arhitutorials Спасибо за ответ.) Да ,я это понимаю,но если судить строго по Big O, то получается O(n)? Просто куда не смотришь везде говорится что удаление и ставка происходит за константное время (или может просто не учитывается время нахождения )
@arhitutorials
@arhitutorials 2 года назад
@@______________9358 Не учитывается время нахождения. Если, например, нужно удалить из списка все элементы, которые больше некоторого X, то будет один проход, вся операция будет займет O(n), удаление каждого отдельного элемента в ней - O(1).
@______________9358
@______________9358 2 года назад
@@arhitutorials спасибо большое!
@artyomlosev1608
@artyomlosev1608 Год назад
@@arhitutorials Спасибо большое! У меня был такой же вопрос, разобрался.
@AlexeyZubkov
@AlexeyZubkov 10 месяцев назад
в русском языке есть аналог слова Iterable?
@mikhaillazarev5378
@mikhaillazarev5378 2 года назад
Разве класс и интерфейс это одно и тоже? В начале видео автор сказал что Iterator это класс, а после когда вошел в документацию, уже говорит что это интерфейс. Буду очень благодарен за прояснение =)
@ElChampi0
@ElChampi0 Год назад
Сам метод remove() работает за константное время, но переборка то все равно линейная, так что все равно задача по удалению элемента имеет линейную сложность
@Art0981
@Art0981 2 года назад
Почему программисты так боятся написать лишнюю строчку кода? Как будто вагоны разгружают.
@xaptmah5354
@xaptmah5354 Год назад
2 + 3 + 4 - 2 + 6 - 7 + 9 - 2 + 2 - 9 - 2 = ? 2 + 2 = ? это если очень сильно притянуть за уши, то примерно по этому.
@Das.Kleine.Krokodil
@Das.Kleine.Krokodil Год назад
это к чему замечание?
@clipper1995N
@clipper1995N 10 месяцев назад
Здравствуйте! Спасибо за интересные видео, я учусь по ним некоторым паттернам и способами решения задач. Обычно я потом в голове "компилирую" полученные знания и делаю свое решение. Я внимательно изучил Ваше решение, и решил сделать что-то в этом ключе. У меня получилась более короткая реализация - один метод и два итератора. Я чувствую, что возможно я не вижу какие есть недостатки в моем решении по сравнению с Вашим, не могли бы Вы оценить и прокомментировать, может я что-то не учел? private static void sortByIterator(List a) { ListIterator iteratorOuter = a.listIterator(); while (iteratorOuter.hasNext()) { int outerIndex = iteratorOuter.nextIndex(); int minValue = iteratorOuter.next(); ListIterator iteratorInner = a.listIterator(outerIndex); while (iteratorInner.hasNext()) { int innerValue = iteratorInner.next(); if (innerValue < minValue) { iteratorInner.set(minValue); iteratorOuter.set(innerValue); minValue = innerValue; } } } }
Далее
UZmir & Mira - Qani qani (Snippet)
00:26
Просмотров 733 тыс.
I Built 4 SECRET Rooms In ONE COLOR!
29:04
Просмотров 13 млн
БАТЯ И СОСЕД😂#shorts
01:00
Просмотров 1,6 млн
Java. Для чего нужен Optional?
18:26
Просмотров 11 тыс.
Lambda Expressions in Java - Full Simple Tutorial
13:05
Hidden Beauties of Java Enums
22:20
Просмотров 10 тыс.
UZmir & Mira - Qani qani (Snippet)
00:26
Просмотров 733 тыс.