Реалізовуємо ArrayList | 🔥 Нова Вправа На GitHub

Поділитися
Вставка
  • Опубліковано 20 вер 2024
  • 👉 Приєднуйся до 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  2 роки тому +2

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

    • @ivankobyuk8385
      @ivankobyuk8385 3 місяці тому

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

  • @ivankobyuk8385
    @ivankobyuk8385 7 місяців тому +1

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

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

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

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

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

  • @anjelomanoranjan
    @anjelomanoranjan 9 місяців тому +1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Корисно)))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Дуже дякую!)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    good channel)

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

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

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

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

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

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

  • @1992SV
    @1992SV Рік тому

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

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

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

  • @Dr.RomanSoproniuk
    @Dr.RomanSoproniuk 9 місяців тому

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

    • @SerhiiHrihus
      @SerhiiHrihus 9 місяців тому

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

    • @Dr.RomanSoproniuk
      @Dr.RomanSoproniuk 9 місяців тому

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

    • @Bobocode
      @Bobocode  9 місяців тому

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

  • @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 дякую за роз'ясення!

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

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

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

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

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

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

  • @ivankobyuk8385
    @ivankobyuk8385 3 місяці тому

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

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

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

    • @ivankobyuk8385
      @ivankobyuk8385 3 місяці тому

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

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

      @@ivankobyuk8385 саме так!

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

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

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

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

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

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

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

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

  • @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 дякую.