Реалізовуємо 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

КОМЕНТАРІ • 71

  • @Bobocode
    @Bobocode  3 роки тому +2

    👉 Навчання від Bobocode: bit.ly/3IRrJhj

    • @ivankobyuk8385
      @ivankobyuk8385 8 місяців тому

      Тарасе, буду дуже вдячний за подібне відео по Stack`у.
      Готовий за донат і обіцяю самому його потім зробити пару разів так тончно)
      Заздалегідь вдячний за внесок!

  • @РусланСеменюк-к8м

    Дякую за таке інформативне відео!

  • @ivankobyuk8385
    @ivankobyuk8385 Рік тому +1

    17:23 - цей вираз обличчя!) я аж завмер, дуже іронічно Тарасе!

    • @Bobocode
      @Bobocode  Рік тому +1

      Стараюся, як можу, щоб вам було весело вчити Java 😉

    • @ivankobyuk8385
      @ivankobyuk8385 Рік тому

      @@Bobocode ❤️‍🩹🤝❤️‍🩹💡🇺🇦✊🏽

  • @LAZIO14
    @LAZIO14 Рік тому +1

    Какое счастье, что украинский язык мой второй родной. Шикарное объяснение. Жду новых материалов от тебя!

  • @СергійГац-щ7т
    @СергійГац-щ7т 2 роки тому +2

    Супер! мені дуже сподобалось, дійсно закрив багато питань, відео гарне, все разом набрав на компі і навідь більше , деякий код зробив на свій лад аби для мене було зрозумілішим, однозначно лайк. це те , що я шукав!!!

  • @ivankobyuk8385
    @ivankobyuk8385 2 роки тому +6

    Шановний Тарасе. Ви відкриваєте очі на такі круті штуки.
    Величезне дякую Вам!

    • @Bobocode
      @Bobocode  2 роки тому +1

      Будь ласка, радий, що вам сподобалося! ;)

  • @romaxa1130
    @romaxa1130 3 роки тому +1

    Тарасе, великий тобі респектос!

  • @serhiivyshnevskyi4141
    @serhiivyshnevskyi4141 3 роки тому +1

    дякую за пізнавальні і просто круті відоси

  • @user-4sg6gh6t9d
    @user-4sg6gh6t9d 2 роки тому

    Супер, Дякую!!!

  • @ЮрійМудрик-и5ц
    @ЮрійМудрик-и5ц 2 роки тому +1

    дуже класно подана інформація! велике дякую!!!!

  • @romangreenwood50
    @romangreenwood50 3 роки тому

    Дякую! Як той, з відірваних башень, ну неможна просто сісти і зробити )))

  • @ВалерійЛебедів
    @ВалерійЛебедів 4 роки тому +2

    дякую. дуже класне відео. на жаль коли я вчив java на курсах мене вчили зовсім по іншому. я тупо сидів і читав по 200 -300 сторінок в тиждень і швидко все забував. а практично щось рідко писав. дуже дякую за твою працю. завдяки ній я підтянувся

  • @АндрійПавлюк-в8ю
    @АндрійПавлюк-в8ю 4 роки тому +3

    Класна якість пояснення та інтерактивність. Я зробив усі завдання з курсу Enterprise Java(варіант до змін). Було б класно їх переписати в такому стилі викладення, бо багато чого не видно про те що розповідається. Дещо погано зрозуміло, маючи уже деякий досвід у програмуванні я розібрався, але для тих хто з нуля можливо складно.

    • @Bobocode
      @Bobocode  4 роки тому

      Ми плануємо наступний курс записати уже з екраном від початку 😂

    • @АндрійПавлюк-в8ю
      @АндрійПавлюк-в8ю 4 роки тому +1

      @@Bobocode Думаю такий контент взірве ютуб :)

  • @kolyagorbunkov4159
    @kolyagorbunkov4159 4 роки тому +3

    какое же крутое объяснение, всё понятно.
    Лайк, подписка

    • @Bobocode
      @Bobocode  4 роки тому +1

      Який же крутий коментар 😀

  • @d.pavlovskyj
    @d.pavlovskyj 4 роки тому +2

    Дуже якісний контент

  • @forstudy9535
    @forstudy9535 4 роки тому +2

    Тарас, дуже крутий контент!
    Хочется бачити більше подібних відео

  • @ivani7254
    @ivani7254 2 роки тому

    Круто! Дякую за титанічну твою роботу!

  • @oleksandrkoshmak
    @oleksandrkoshmak 3 роки тому

    Дуже дякую!)

  • @beyondLenka
    @beyondLenka 4 роки тому +3

    Спасибо за классные видео, всегда интересно и информативно 🙂

  • @maksymmatlo4327
    @maksymmatlo4327 3 роки тому

    Дякую за якісний контент!

  • @ВиталийКомлев-р8б
    @ВиталийКомлев-р8б 2 роки тому

    Круто! Слышал, на собеседованиях такое часто спрашивают)
    Сам реализовываю сейчас ArrayList, который содержит в себе строки, в качестве обучающего задания.

  • @michaellarin4246
    @michaellarin4246 2 роки тому

    замечательное видео, продолжайте в том же духе, уверен просмотров будет все больше и больше!

  • @СтепанПотюк-д5о
    @СтепанПотюк-д5о 2 роки тому

    Корисно)))

  • @feoktant
    @feoktant 4 роки тому +2

    Дуже крутий лайв кодінг! І вправа класна, можна собі ускладнити завдання - реалізувати без жодного if, або оптимізувати для примітивів)
    В мене з'явилися такі питання:
    1. Чи має співпадати інтерфейс List з реальнім util.List? Зараз в них є невеликі розбіжності
    2. Як написати тест на memory leak для цього прикладу? Чи це поза цієї вправи?)

    • @Bobocode
      @Bobocode  4 роки тому +2

      1. Та ні, ми все-таки робимо навчальні матеріали, тому основне, щоб було зрозуміло. Але також стараємося, щоб було схоже на JDK
      2. Та от цікаве питання. Зараз плануємо тести переробляти на рефлексійні, оскільки це для навчання, щоб можна більше внутрішніх моментів перевірити. Стосовно memory leak, може на великих об’ємах пам’яті в циклі створювати нові списки. Що скажеш?

  • @АлексейГребенюк-я4ь

    При використанні методу remove(int index), останній елемент дублюється в нашому масиві

  • @javadaylviv3265
    @javadaylviv3265 4 роки тому +1

    Лайк за футболку:) Цього року буде не менш крутий мерч!

  • @vermilinguas
    @vermilinguas 4 роки тому +11

    Привіт, дуже цікавий, корисний та інформативний урок. По хеш-мапі щось схоже планується?

    • @Bobocode
      @Bobocode  4 роки тому +9

      Цілком можливо 😉

    • @vermilinguas
      @vermilinguas 4 роки тому

      @@Bobocode я відкрив реалізацію від Оракла, і мінімального не дуже зрозумів, що там взагалі відбувається в тому класі :D

  • @jeoparrdy
    @jeoparrdy 4 роки тому +1

    за крутих програмістів - подяка!))) Питання - як можна автоматизувати скачування оновленнь репозиторію в свою Ідею? Чи існує така можливість? І ще - в завданні по RecursiveBinarySearchTree відсутні описи методів - що саме повинен робити той чи інший метод.

  • @friedbearsburninhell2022
    @friedbearsburninhell2022 4 роки тому +2

    Абсолютно вірно - теорія повинна доповнювати практичні навички(допомагати приймати рішення, або впливати на вібир імплементації), але зовсім не навпаки!

  • @AlexSmile-y2x
    @AlexSmile-y2x 4 роки тому

    good channel)

  • @makschornyi7969
    @makschornyi7969 4 роки тому

    Десь я бачив цю футболку... :)

  • @Roman-s9w
    @Roman-s9w Рік тому

    При спробі тестувати чому випадає список Run Edit Configuration без списку тестування?

  • @ivankobyuk8385
    @ivankobyuk8385 8 місяців тому

    17:56 - а допускається в методі clear() просетити null полю elements ?

    • @Bobocode
      @Bobocode  8 місяців тому +1

      Можна занулити елементи масиву, але сам масив нам ще потрібен, тому не треба сетити полю elements null. Ми ж можемо і далі використовувати ArrayList після виклику метода clear(), просто він буде пустий.

    • @ivankobyuk8385
      @ivankobyuk8385 8 місяців тому

      @@Bobocode зрозумів , дякую!
      Щоб не вляпатись в NPE зайвий раз 💡

    • @Bobocode
      @Bobocode  8 місяців тому +1

      @@ivankobyuk8385 саме так!

  • @antonignatenko7776
    @antonignatenko7776 3 роки тому +1

    благодарности нет предела!
    не совсем понимаю алгоритм в методе remove by element
    я так понял что циклом бежать это не очень хорошая практика

  • @1992SV
    @1992SV 2 роки тому

    Не до кінця правильно працює метод remove. Бо якщо хочемо видалити елемент остатнього індексу, метод його не видаляє

    • @Bobocode
      @Bobocode  2 роки тому +1

      Так. Треба ще "занулити" відповідний елемент масиву.

  • @Dr.RomanSoproniuk
    @Dr.RomanSoproniuk Рік тому

    ви оголошуєте змінну size але не зрозуміло коли вона ініціалізовується, звідки береться що вона 0 або 3 або 10 для прикладу

    • @SerhiiHrihus
      @SerhiiHrihus Рік тому

      Привіт. Ваше запитання говорить про те, що це відео поки потрібно відкласти і розібратися з більш фундаментальними питаннями. Що таке змінні, де вони зберігаються, які значення їм присвоюються за замовчуванням. Що таке об'єкт, клас, статичні параметри і т.д.

    • @Dr.RomanSoproniuk
      @Dr.RomanSoproniuk Рік тому

      @@SerhiiHrihus можна було б сказати що просто присвоюється 0

    • @Bobocode
      @Bobocode  Рік тому

      @@Dr.RomanSoproniuk цей канал для працюючих розробників, тому ми свідомо не озвучуємо елементарних речей.

  • @ВалерійЛебедів
    @ВалерійЛебедів 4 роки тому

    не можу розібрати куди швидша вставка в середину. в книжці знайшов що і туди і туди O(n). а також не розумію чому set в ArrayList - O(n) а не O(1). Тарас, можеш трохи допомогти?

    • @tarasboychuk7
      @tarasboychuk7 4 роки тому

      Все залежить від реалізації. Якщо говорити про офіційну 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"

    • @ВалерійЛебедів
      @ВалерійЛебедів 4 роки тому

      @@tarasboychuk7 дуже дякую

  • @Roman-s9w
    @Roman-s9w Рік тому

    Як зробити Тест які потрібно налаштування?

    • @Bobocode
      @Bobocode  Рік тому

      Спробуйте зайти в клас з тестами, і там натиснути на зелену кнопку "Run Test"

  • @baibula
    @baibula Рік тому

    Добрий день! Дякую за відео, дуже гарний матеріал.
    Маю одне питання стосовно коду у відео, але ютуб видаляє мої коментарі. 😡

    • @baibula
      @baibula Рік тому

      Хотів би уточнити стосовно Object[]. У книзі OnJava8, Брюс Екель не рекомендує використовувати Object[], коли йде робота з дженеріками, а завжди замість нього використовувати T[], створюючи його через Class токен або через фабрику. Екель посилається на Ніла Гафтера (один з девелоперів Java 5).

    • @baibula
      @baibula Рік тому

      Ніл Гафтер в свою чергу каже щось типу, що він був лінивий, коли переписував бібліотеки Джава під дженеріки і що ми не маємо робити бібліотеки за його прикладом. Також він каже, що не міг змінити деякі бібліотеки не ламаючи існуючі інтерфейси.

    • @baibula
      @baibula Рік тому

      Я поставив своє питання в CHAT GPT, і він мені сказав у підсумку:
      ....In summary, using T[] instead of Object[] can lead to more type-safe, readable, and performant code.
      Скажіть, будь ласка, то нам все-таки краще використовувати у випадках з дженеріками T[] замість Object[], я все правильно дослідив?

    • @Bobocode
      @Bobocode  Рік тому

      ​@@baibula дякую за питання. Якщо коротко - так.
      У випадку ArrayList, я думаю що реальною перевагою є хіба що "more readeable code". Оскільки сам масив на зовні не доступний - по "type safety" ми нічого не програємо. А стосовно "more performant", то це взагалі неправда. Після компіляції "T" стреться до верхньої межі (в нашому випадку до Object) тому в JVM ніяких переваг не буде.
      Краще використовувати "T[]". Я вирішив використовувати явний "Object[]", щоб наглядніше показати, що там насправді під капотом.

    • @baibula
      @baibula Рік тому

      @@Bobocode дякую за роз'ясення!

  • @MobileMiron
    @MobileMiron 3 роки тому

    Цікаво що в мене не знаходить метод Objects.checkIndex . Пише Cannot resolve method 'checkIndex' in 'Objects'
    import java.util.Objects; виконав. В чому може бути проблема, може версія java не та?
    Project SDK 1.8.0_281
    Project language level: 8

    • @Bobocode
      @Bobocode  3 роки тому

      Може, для наших вправ треба мінімум Java 11

    • @MobileMiron
      @MobileMiron 3 роки тому

      @@Bobocode дякую.

  • @caffeinejavacode1475
    @caffeinejavacode1475 4 роки тому

    Дякую. питання не в тему але може хто знає переваги та недоліки field, setter, constructor injection?
    зараз роблю CrazyLambdas

    • @Bobocode
      @Bobocode  4 роки тому +1

      Найкращий - через конструктор, бо він заставляє при старанні передати все, що треба, це найбільш природній спосіб. Але він має обмеження, наприклад може бути циклічна залежність.