Реалізовуємо ArrayList | 🔥 Нова Вправа На GitHub
Вставка
- Опубліковано 7 лют 2025
- 👉 Приєднуйся до Bobocode Community: www.bobocode.com/
____________________________________________
GitHub: github.com/bob...
Telegram: t.me/bobocode
LinkedIn: bit.ly/2RWPQF5
Twitter: bit.ly/3vaQiOl
Patreon: / bobocode
Тарас в LinkedIn: bit.ly/2ElWg8J
Тарас в Twitter: bit.ly/33Pmuwg
____________________________________________
Нова вправа, яка на практиці закриє усі ваші питання про ArrayList 💪🏻. Робіть вправу та напишіть у коментарях, які ❓ методи виконані не до кінця, або не зовсім правильно.
#opensource #java #education
👉 Навчання від Bobocode: bit.ly/3IRrJhj
Тарасе, буду дуже вдячний за подібне відео по Stack`у.
Готовий за донат і обіцяю самому його потім зробити пару разів так тончно)
Заздалегідь вдячний за внесок!
Дякую за таке інформативне відео!
17:23 - цей вираз обличчя!) я аж завмер, дуже іронічно Тарасе!
Стараюся, як можу, щоб вам було весело вчити Java 😉
@@Bobocode ❤️🩹🤝❤️🩹💡🇺🇦✊🏽
Какое счастье, что украинский язык мой второй родной. Шикарное объяснение. Жду новых материалов от тебя!
Супер! мені дуже сподобалось, дійсно закрив багато питань, відео гарне, все разом набрав на компі і навідь більше , деякий код зробив на свій лад аби для мене було зрозумілішим, однозначно лайк. це те , що я шукав!!!
Шановний Тарасе. Ви відкриваєте очі на такі круті штуки.
Величезне дякую Вам!
Будь ласка, радий, що вам сподобалося! ;)
Тарасе, великий тобі респектос!
дякую за пізнавальні і просто круті відоси
Супер, Дякую!!!
дуже класно подана інформація! велике дякую!!!!
Дякую! Як той, з відірваних башень, ну неможна просто сісти і зробити )))
дякую. дуже класне відео. на жаль коли я вчив java на курсах мене вчили зовсім по іншому. я тупо сидів і читав по 200 -300 сторінок в тиждень і швидко все забував. а практично щось рідко писав. дуже дякую за твою працю. завдяки ній я підтянувся
Класна якість пояснення та інтерактивність. Я зробив усі завдання з курсу Enterprise Java(варіант до змін). Було б класно їх переписати в такому стилі викладення, бо багато чого не видно про те що розповідається. Дещо погано зрозуміло, маючи уже деякий досвід у програмуванні я розібрався, але для тих хто з нуля можливо складно.
Ми плануємо наступний курс записати уже з екраном від початку 😂
@@Bobocode Думаю такий контент взірве ютуб :)
какое же крутое объяснение, всё понятно.
Лайк, подписка
Який же крутий коментар 😀
Дуже якісний контент
Тарас, дуже крутий контент!
Хочется бачити більше подібних відео
Круто! Дякую за титанічну твою роботу!
Дуже дякую!)
Спасибо за классные видео, всегда интересно и информативно 🙂
Дякую за якісний контент!
Круто! Слышал, на собеседованиях такое часто спрашивают)
Сам реализовываю сейчас ArrayList, который содержит в себе строки, в качестве обучающего задания.
замечательное видео, продолжайте в том же духе, уверен просмотров будет все больше и больше!
Корисно)))
Дуже крутий лайв кодінг! І вправа класна, можна собі ускладнити завдання - реалізувати без жодного if, або оптимізувати для примітивів)
В мене з'явилися такі питання:
1. Чи має співпадати інтерфейс List з реальнім util.List? Зараз в них є невеликі розбіжності
2. Як написати тест на memory leak для цього прикладу? Чи це поза цієї вправи?)
1. Та ні, ми все-таки робимо навчальні матеріали, тому основне, щоб було зрозуміло. Але також стараємося, щоб було схоже на JDK
2. Та от цікаве питання. Зараз плануємо тести переробляти на рефлексійні, оскільки це для навчання, щоб можна більше внутрішніх моментів перевірити. Стосовно memory leak, може на великих об’ємах пам’яті в циклі створювати нові списки. Що скажеш?
При використанні методу remove(int index), останній елемент дублюється в нашому масиві
Лайк за футболку:) Цього року буде не менш крутий мерч!
Привіт, дуже цікавий, корисний та інформативний урок. По хеш-мапі щось схоже планується?
Цілком можливо 😉
@@Bobocode я відкрив реалізацію від Оракла, і мінімального не дуже зрозумів, що там взагалі відбувається в тому класі :D
за крутих програмістів - подяка!))) Питання - як можна автоматизувати скачування оновленнь репозиторію в свою Ідею? Чи існує така можливість? І ще - в завданні по RecursiveBinarySearchTree відсутні описи методів - що саме повинен робити той чи інший метод.
Абсолютно вірно - теорія повинна доповнювати практичні навички(допомагати приймати рішення, або впливати на вібир імплементації), але зовсім не навпаки!
good channel)
Десь я бачив цю футболку... :)
При спробі тестувати чому випадає список Run Edit Configuration без списку тестування?
17:56 - а допускається в методі clear() просетити null полю elements ?
Можна занулити елементи масиву, але сам масив нам ще потрібен, тому не треба сетити полю elements null. Ми ж можемо і далі використовувати ArrayList після виклику метода clear(), просто він буде пустий.
@@Bobocode зрозумів , дякую!
Щоб не вляпатись в NPE зайвий раз 💡
@@ivankobyuk8385 саме так!
благодарности нет предела!
не совсем понимаю алгоритм в методе remove by element
я так понял что циклом бежать это не очень хорошая практика
Не до кінця правильно працює метод remove. Бо якщо хочемо видалити елемент остатнього індексу, метод його не видаляє
Так. Треба ще "занулити" відповідний елемент масиву.
ви оголошуєте змінну size але не зрозуміло коли вона ініціалізовується, звідки береться що вона 0 або 3 або 10 для прикладу
Привіт. Ваше запитання говорить про те, що це відео поки потрібно відкласти і розібратися з більш фундаментальними питаннями. Що таке змінні, де вони зберігаються, які значення їм присвоюються за замовчуванням. Що таке об'єкт, клас, статичні параметри і т.д.
@@SerhiiHrihus можна було б сказати що просто присвоюється 0
@@Dr.RomanSoproniuk цей канал для працюючих розробників, тому ми свідомо не озвучуємо елементарних речей.
не можу розібрати куди швидша вставка в середину. в книжці знайшов що і туди і туди O(n). а також не розумію чому set в ArrayList - O(n) а не O(1). Тарас, можеш трохи допомогти?
Все залежить від реалізації. Якщо говорити про офіційну JDK:
- метод set(index, element), відповідно до офіційної доки виконується за константний час O(1), що дуже логічно (docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html)
- метод add(index, element), якщо вставка в середину, все залежить від методу System.arrayCopy(), оскільки він нативний, то буде залежати від машини. Він точно працює швидко і значно швидше ніж O(n), але константний час вони не гарантують. Ось що пишуть "The add operation runs in amortized constant time, that is, adding n elements requires O(n) time"
@@tarasboychuk7 дуже дякую
Як зробити Тест які потрібно налаштування?
Спробуйте зайти в клас з тестами, і там натиснути на зелену кнопку "Run Test"
Добрий день! Дякую за відео, дуже гарний матеріал.
Маю одне питання стосовно коду у відео, але ютуб видаляє мої коментарі. 😡
Хотів би уточнити стосовно Object[]. У книзі OnJava8, Брюс Екель не рекомендує використовувати Object[], коли йде робота з дженеріками, а завжди замість нього використовувати T[], створюючи його через Class токен або через фабрику. Екель посилається на Ніла Гафтера (один з девелоперів Java 5).
Ніл Гафтер в свою чергу каже щось типу, що він був лінивий, коли переписував бібліотеки Джава під дженеріки і що ми не маємо робити бібліотеки за його прикладом. Також він каже, що не міг змінити деякі бібліотеки не ламаючи існуючі інтерфейси.
Я поставив своє питання в CHAT GPT, і він мені сказав у підсумку:
....In summary, using T[] instead of Object[] can lead to more type-safe, readable, and performant code.
Скажіть, будь ласка, то нам все-таки краще використовувати у випадках з дженеріками T[] замість Object[], я все правильно дослідив?
@@baibula дякую за питання. Якщо коротко - так.
У випадку ArrayList, я думаю що реальною перевагою є хіба що "more readeable code". Оскільки сам масив на зовні не доступний - по "type safety" ми нічого не програємо. А стосовно "more performant", то це взагалі неправда. Після компіляції "T" стреться до верхньої межі (в нашому випадку до Object) тому в JVM ніяких переваг не буде.
Краще використовувати "T[]". Я вирішив використовувати явний "Object[]", щоб наглядніше показати, що там насправді під капотом.
@@Bobocode дякую за роз'ясення!
Цікаво що в мене не знаходить метод Objects.checkIndex . Пише Cannot resolve method 'checkIndex' in 'Objects'
import java.util.Objects; виконав. В чому може бути проблема, може версія java не та?
Project SDK 1.8.0_281
Project language level: 8
Може, для наших вправ треба мінімум Java 11
@@Bobocode дякую.
Дякую. питання не в тему але може хто знає переваги та недоліки field, setter, constructor injection?
зараз роблю CrazyLambdas
Найкращий - через конструктор, бо він заставляє при старанні передати все, що треба, це найбільш природній спосіб. Але він має обмеження, наприклад може бути циклічна залежність.