Урок 20 - Введение в Set. HashSet (прокачанная Java)

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 ธ.ค. 2024

ความคิดเห็น •

  • @nizat_rum
    @nizat_rum 6 หลายเดือนก่อน +3

    Лучший просто! После твоих уроков и эккеля реализовываю собственные хешированные сеты и мапы

  • @reclreclur7203
    @reclreclur7203 3 หลายเดือนก่อน

    Заур, спасибо вам! Все как всегда на высоте!

  • @qwerty32198
    @qwerty32198 ปีที่แล้ว +5

    12:15 - Кстати IntelliJ Idea умеет делать множественный курсор при зажатом колесе. Попробуйте, должно понравиться )

  • @Кыргызстан-менинмекеним
    @Кыргызстан-менинмекеним 7 หลายเดือนก่อน

    Твои уроки просто бомба, все просто и понятно. Не останавливайся брат, твои уроки реально помогают мне

  • @шортить_нельзя_лонгировать
    @шортить_нельзя_лонгировать หลายเดือนก่อน

    На 9:32 даже перемотал еще разок на 10 секунд назад.
    Чтобы уж точно запомнить хорошо!

  • @badfyrepytweed3374
    @badfyrepytweed3374 3 ปีที่แล้ว +4

    Большое спасибо, ясное изложение мысли!

  • @natalysammet656
    @natalysammet656 2 ปีที่แล้ว +5

    Когда нужно внести одинаковые изменения одновременно на нескольких строках(как на моменте 12:08), можно зажать alt и, удерживая ЛКМ, переместить курсор вдоль нужных строк (как будто вы их выделяете). Я заметила, что автор этой фичей идеи не пользуется - подумала, может, не знает и ему будет полезно :)

    • @natalysammet656
      @natalysammet656 2 ปีที่แล้ว

      Еще можно через хот кей shift+f6 (или ctrl+f6, точно не помню, но в intellij idea это написано) сделать rename для переменной, тогда не придется вручную её везде переименовывать. Возможно, это будет полезно не только автору, но и зрителям

    • @programaniya
      @programaniya  2 ปีที่แล้ว +10

      Благодарю, что делитесь полезной информацией. Обычно в курсах я очень редко использую горячие клавиши, особенно в уроках, которые выкладываю на TH-cam. В противном случае, у зрителя возникает очень много вопросов, как внезапно появился тот или иной участок кода.

  • @greenkingshop1033
    @greenkingshop1033 2 ปีที่แล้ว +2

    Спасибо еще раз, прям супер!)

  • @olydashko
    @olydashko ปีที่แล้ว

    Спасибо за очередной отличный урок 🤩

  • @MaximKe4up
    @MaximKe4up 2 ปีที่แล้ว +6

    9:31 , автор начал говорить рифмами

  • @programming_amo
    @programming_amo 2 ปีที่แล้ว +2

    could u say me, what i will get additionally if i bay your cource, sir?

    • @programaniya
      @programaniya  2 ปีที่แล้ว +1

      On my youtube channel you can watch only part of my courses. So if you buy full course, you will get all lessons and ability to ask questions.

    • @programming_amo
      @programming_amo 2 ปีที่แล้ว +2

      @@programaniya thanks

  • @---zk6lz
    @---zk6lz 2 ปีที่แล้ว +3

    хорошие лекции у вас.
    подскажите в полном курсе на юдеми материал в уроках только лекционный или есть ещё какие то практические уроки/задания?

    • @programaniya
      @programaniya  2 ปีที่แล้ว

      Здравствуйте. Данный курс состоит только из видео-уроков.

  • @Annonymouseification
    @Annonymouseification 2 ปีที่แล้ว +1

    Вопрос, скорее всего глупый: почему 5:10 нужно писать psvm? Почему без этого просто в классе это работать не будет?

    • @programaniya
      @programaniya  2 ปีที่แล้ว +1

      Подобного рода действия где-то должны быть записаны, например, в методе. А чтобы они ещё и выполнились, нам необходимо использовать метод main.

  • @ЛилияПилипушка
    @ЛилияПилипушка ปีที่แล้ว +1

    Здравствуйте, почему вместо значений в HashSet не положить null, для чего там каждый раз создается new Object?

    • @programaniya
      @programaniya  ปีที่แล้ว +1

      Здравствуйте. Хороший вопрос. Я думаю вот из-за чего. HashSet использует методы HashMap. Возьмём, например, метод remove. Он возвращает value элемента, который вы удаляете, либо null, если такого элемента нет.
      Теперь взгляните на метод remove у HashSet, который использует метод remove из HashMap:
      return map.remove(o)==PRESENT;
      Здесь осуществляется проверка, является ли удалённый элемент объектом PRESENT (это new Object про который вы и задали вопрос). И получается, что, если бы в качестве значения в HashSet добавлялся null, тогда, в том случае, если метод remove не удалил бы элемент из HashSet, метод всё равно бы возвращал true, что было бы некорректным.

  • @killerbe3669
    @killerbe3669 2 ปีที่แล้ว +1

    у меня почему то retainAll не работает, intersect пустной выходит

    • @programaniya
      @programaniya  2 ปีที่แล้ว

      Пришлите скрины, чтобы можно было взглянуть.

    • @WhiteWay-tx9qt
      @WhiteWay-tx9qt ปีที่แล้ว

      У меня тоже

  • @ДмитрийАницой
    @ДмитрийАницой 3 ปีที่แล้ว +3

    Здравствуйте! Возник вопрос: почему при использовании метода addAll числа были упорядочены от меньшего к большему, разве union не должен был вывести их в случайном порядке?

    • @programaniya
      @programaniya  3 ปีที่แล้ว +2

      В основе HashSet лежит HashMap, в основе которого массив. Каждый элемент этого массива - это LinkedList. Распределение элементов в данный массив таково, что числа добавляются по возрастанию. То есть addAll никакой роли в данном порядке не сыграл. Добавьте в HashSet в разброску любые числа и выведите его на экран. Вы увидете, что соблюдается порядок.

    • @Андрей-ж6у3ч
      @Андрей-ж6у3ч 3 ปีที่แล้ว

      @@programaniya так ведь в linked list элементы никак не сортируются

    • @Андрей-ж6у3ч
      @Андрей-ж6у3ч 3 ปีที่แล้ว

      @@programaniya это просто набор связанных нод

    • @RiksevStreams
      @RiksevStreams 2 ปีที่แล้ว +5

      Из-за хэш-кода создается иллюзия того, что все числа упорядочены. На самом деле если взять больший разброс, например 10-ть цифр от 0 до 1000, то будет такая ситуация: [464, 33, 722, 947, 470, 311, 235, 955, 765, 126]. То-есть числа всегда становятся в определенном порядке в зависимости от индекса, который им рассчитывает hashcode(). В данном видео из-за маленьких шагов между числами может создаться впечатление, что происходит сортировка согласно реальной системы счислений.

  • @Anastazi_Mart
    @Anastazi_Mart 10 หลายเดือนก่อน

    Подскажите, пожалуйста, как выделить из множества Set 2 наибольших по значению элемента?

    • @programaniya
      @programaniya  10 หลายเดือนก่อน

      У вас есть какой-то свой вариант?

    • @Anastazi_Mart
      @Anastazi_Mart 10 หลายเดือนก่อน

      @programaniya пытаюсь решить такое задание, верно ли, что часть с переменными long там не обязательна? Можно оставить только цикл for?
      Дан класс ConsoleInputService, основная задача которого, это считывать числа из консоли.
      Наша компания заинтересовалась, сколько в среднем тратит пользователь на ввод числа с клавиатуры.
      Предлагаем вам усовершенствовать код таким образом, чтобы в консоль выводилось количество секунд - это время, за которое пользователь вводит число из консоли.
      Решение должно отвечать следующим критериям:
      предоставленные классы нельзя изменять (за исключением первой строки метода main, можно изменять только реализацию интерфейса);
      после имплементации данного функционала, код должен работать совершенно так же: выбрасывать те же ошибки и возвращать те же значения;
      в консоль должно выводиться количество секунд, которые тратит пользователь на ввод числа. Предсказать, чтобы результат выводился с точностью 3 знака после запятой;
      нельзя использовать дублирование кода.
      Предлагаем стартовый код:
      public class Main {
      public static void main(String[] args) {
      InputService inputService = new ConsoleInputService();
      int input = inputService.getInteger();
      System.out.printf("Input: %d", input);
      }
      }
      public interface InputService {
      Integer getInteger();
      }
      public class ConsoleInputService implements InputService {
      private final Scanner scanner = новый Scanner(System.in);
      @Override
      public Integer getInteger() {
      return scanner.nextInt();
      }
      }

    • @programaniya
      @programaniya  10 หลายเดือนก่อน

      Дорогие подписчики канала, предлагаю потренироваться :)

    • @programaniya
      @programaniya  10 หลายเดือนก่อน

      Дорогие подписчики канала, предлагаю потренироваться :)

  • @EctxD
    @EctxD 2 ปีที่แล้ว

    Вопрос, при создание union используеться:HashSet union = new HashSet(hashSet1);
    В чём проблема использвать это? (среда разработки ругается)
    HashSet union = new HashSet;
    Я так понимаю потому что в таком раскладе не выделяется память а просто ссылается?
    Или в чём проблема

    • @programaniya
      @programaniya  2 ปีที่แล้ว

      new HashSet писать нельзя. У конструктора всегда есть круглые скобки.

  • @koteehka69
    @koteehka69 ปีที่แล้ว

    А почему у меня при объединении (Union) не добавился 0? У меня hS1 - 1,2,3 hS2 - 0,1,2 А при объединении hS1.addAll(hS2) - получилось 1,2,3

    • @programaniya
      @programaniya  ปีที่แล้ว +1

      Чтобы ответить на ваши вопросы, необходимо увидеть скрины кода.

    • @koteehka69
      @koteehka69 ปีที่แล้ว

      @@programaniya спасибо что откликнулись, я уже разобралась правда) просто сама допустила ошибку про не внимательности) У вас отличная подача материала, и вообще огромное спасибо что вы есть

  • @alexandrkomar4741
    @alexandrkomar4741 หลายเดือนก่อน

    Все равно не совсем понятно, где это применять. Но методы интересные конечно у SET

    • @programaniya
      @programaniya  หลายเดือนก่อน

      Это становится понятно только тогда, когда на практике вам необходимо работать с коллекцией элементов. И уже в зависимости от того, какими свойствами данная коллекция должна обладать (по техническому заданию), вы сможете выбрать необходимую, наиболее подходящую.

    • @korolcreeper
      @korolcreeper หลายเดือนก่อน +2

      В любом месте, где нужно хранить такие значения, которые могут повторяться, но нам нужны всего один раз. Например, мы организовываем праздник и каждый посетитель хочет, чтобы там присутствовало конкретное блюдо. Для этого нужно, чтобы повар умел готовить это блюдо. мы создаём hashset и записываем в него блюда, которые сказали нам пользователи. Нам не важно, если несколько пользователей назвало одно блюдо. А потом мы работаем с элементами этого сета и проверяем, умеет повар готовить заданное блюдо или нет. Если умеет, то идём дальше. Если не умеет, то даём поводу задание научиться.

  • @zamzamacademy777
    @zamzamacademy777 2 ปีที่แล้ว

    👍

  • @umaxaxa
    @umaxaxa หลายเดือนก่อน

    автор бакинец?
    бакинский акцент чувствуется)

    • @programaniya
      @programaniya  หลายเดือนก่อน

      Да =)

    • @umaxaxa
      @umaxaxa หลายเดือนก่อน

      ​@@programaniya O'zbekistannan Salam qaqas
      Videolarin qeseydi. Minnatdaram

    • @programaniya
      @programaniya  หลายเดือนก่อน

      Teshekkur edirem!

  • @СалаватБикбулатов-щ4я
    @СалаватБикбулатов-щ4я 2 ปีที่แล้ว

    Рассказываешь конечно хорошо. Но звук это просто издевательство над людьми невозможно слушать просто