Когда нужно внести одинаковые изменения одновременно на нескольких строках(как на моменте 12:08), можно зажать alt и, удерживая ЛКМ, переместить курсор вдоль нужных строк (как будто вы их выделяете). Я заметила, что автор этой фичей идеи не пользуется - подумала, может, не знает и ему будет полезно :)
Еще можно через хот кей shift+f6 (или ctrl+f6, точно не помню, но в intellij idea это написано) сделать rename для переменной, тогда не придется вручную её везде переименовывать. Возможно, это будет полезно не только автору, но и зрителям
Благодарю, что делитесь полезной информацией. Обычно в курсах я очень редко использую горячие клавиши, особенно в уроках, которые выкладываю на TH-cam. В противном случае, у зрителя возникает очень много вопросов, как внезапно появился тот или иной участок кода.
Здравствуйте. Хороший вопрос. Я думаю вот из-за чего. HashSet использует методы HashMap. Возьмём, например, метод remove. Он возвращает value элемента, который вы удаляете, либо null, если такого элемента нет. Теперь взгляните на метод remove у HashSet, который использует метод remove из HashMap: return map.remove(o)==PRESENT; Здесь осуществляется проверка, является ли удалённый элемент объектом PRESENT (это new Object про который вы и задали вопрос). И получается, что, если бы в качестве значения в HashSet добавлялся null, тогда, в том случае, если метод remove не удалил бы элемент из HashSet, метод всё равно бы возвращал true, что было бы некорректным.
Здравствуйте! Возник вопрос: почему при использовании метода addAll числа были упорядочены от меньшего к большему, разве union не должен был вывести их в случайном порядке?
В основе HashSet лежит HashMap, в основе которого массив. Каждый элемент этого массива - это LinkedList. Распределение элементов в данный массив таково, что числа добавляются по возрастанию. То есть addAll никакой роли в данном порядке не сыграл. Добавьте в HashSet в разброску любые числа и выведите его на экран. Вы увидете, что соблюдается порядок.
Из-за хэш-кода создается иллюзия того, что все числа упорядочены. На самом деле если взять больший разброс, например 10-ть цифр от 0 до 1000, то будет такая ситуация: [464, 33, 722, 947, 470, 311, 235, 955, 765, 126]. То-есть числа всегда становятся в определенном порядке в зависимости от индекса, который им рассчитывает hashcode(). В данном видео из-за маленьких шагов между числами может создаться впечатление, что происходит сортировка согласно реальной системы счислений.
@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(); } }
Вопрос, при создание union используеться:HashSet union = new HashSet(hashSet1); В чём проблема использвать это? (среда разработки ругается) HashSet union = new HashSet; Я так понимаю потому что в таком раскладе не выделяется память а просто ссылается? Или в чём проблема
@@programaniya спасибо что откликнулись, я уже разобралась правда) просто сама допустила ошибку про не внимательности) У вас отличная подача материала, и вообще огромное спасибо что вы есть
Это становится понятно только тогда, когда на практике вам необходимо работать с коллекцией элементов. И уже в зависимости от того, какими свойствами данная коллекция должна обладать (по техническому заданию), вы сможете выбрать необходимую, наиболее подходящую.
В любом месте, где нужно хранить такие значения, которые могут повторяться, но нам нужны всего один раз. Например, мы организовываем праздник и каждый посетитель хочет, чтобы там присутствовало конкретное блюдо. Для этого нужно, чтобы повар умел готовить это блюдо. мы создаём hashset и записываем в него блюда, которые сказали нам пользователи. Нам не важно, если несколько пользователей назвало одно блюдо. А потом мы работаем с элементами этого сета и проверяем, умеет повар готовить заданное блюдо или нет. Если умеет, то идём дальше. Если не умеет, то даём поводу задание научиться.
Лучший просто! После твоих уроков и эккеля реализовываю собственные хешированные сеты и мапы
1
Заур, спасибо вам! Все как всегда на высоте!
12:15 - Кстати IntelliJ Idea умеет делать множественный курсор при зажатом колесе. Попробуйте, должно понравиться )
Твои уроки просто бомба, все просто и понятно. Не останавливайся брат, твои уроки реально помогают мне
На 9:32 даже перемотал еще разок на 10 секунд назад.
Чтобы уж точно запомнить хорошо!
Большое спасибо, ясное изложение мысли!
Когда нужно внести одинаковые изменения одновременно на нескольких строках(как на моменте 12:08), можно зажать alt и, удерживая ЛКМ, переместить курсор вдоль нужных строк (как будто вы их выделяете). Я заметила, что автор этой фичей идеи не пользуется - подумала, может, не знает и ему будет полезно :)
Еще можно через хот кей shift+f6 (или ctrl+f6, точно не помню, но в intellij idea это написано) сделать rename для переменной, тогда не придется вручную её везде переименовывать. Возможно, это будет полезно не только автору, но и зрителям
Благодарю, что делитесь полезной информацией. Обычно в курсах я очень редко использую горячие клавиши, особенно в уроках, которые выкладываю на TH-cam. В противном случае, у зрителя возникает очень много вопросов, как внезапно появился тот или иной участок кода.
Спасибо еще раз, прям супер!)
Спасибо за очередной отличный урок 🤩
9:31 , автор начал говорить рифмами
could u say me, what i will get additionally if i bay your cource, sir?
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.
@@programaniya thanks
хорошие лекции у вас.
подскажите в полном курсе на юдеми материал в уроках только лекционный или есть ещё какие то практические уроки/задания?
Здравствуйте. Данный курс состоит только из видео-уроков.
Вопрос, скорее всего глупый: почему 5:10 нужно писать psvm? Почему без этого просто в классе это работать не будет?
Подобного рода действия где-то должны быть записаны, например, в методе. А чтобы они ещё и выполнились, нам необходимо использовать метод main.
Здравствуйте, почему вместо значений в HashSet не положить null, для чего там каждый раз создается new Object?
Здравствуйте. Хороший вопрос. Я думаю вот из-за чего. HashSet использует методы HashMap. Возьмём, например, метод remove. Он возвращает value элемента, который вы удаляете, либо null, если такого элемента нет.
Теперь взгляните на метод remove у HashSet, который использует метод remove из HashMap:
return map.remove(o)==PRESENT;
Здесь осуществляется проверка, является ли удалённый элемент объектом PRESENT (это new Object про который вы и задали вопрос). И получается, что, если бы в качестве значения в HashSet добавлялся null, тогда, в том случае, если метод remove не удалил бы элемент из HashSet, метод всё равно бы возвращал true, что было бы некорректным.
у меня почему то retainAll не работает, intersect пустной выходит
Пришлите скрины, чтобы можно было взглянуть.
У меня тоже
Здравствуйте! Возник вопрос: почему при использовании метода addAll числа были упорядочены от меньшего к большему, разве union не должен был вывести их в случайном порядке?
В основе HashSet лежит HashMap, в основе которого массив. Каждый элемент этого массива - это LinkedList. Распределение элементов в данный массив таково, что числа добавляются по возрастанию. То есть addAll никакой роли в данном порядке не сыграл. Добавьте в HashSet в разброску любые числа и выведите его на экран. Вы увидете, что соблюдается порядок.
@@programaniya так ведь в linked list элементы никак не сортируются
@@programaniya это просто набор связанных нод
Из-за хэш-кода создается иллюзия того, что все числа упорядочены. На самом деле если взять больший разброс, например 10-ть цифр от 0 до 1000, то будет такая ситуация: [464, 33, 722, 947, 470, 311, 235, 955, 765, 126]. То-есть числа всегда становятся в определенном порядке в зависимости от индекса, который им рассчитывает hashcode(). В данном видео из-за маленьких шагов между числами может создаться впечатление, что происходит сортировка согласно реальной системы счислений.
Подскажите, пожалуйста, как выделить из множества Set 2 наибольших по значению элемента?
У вас есть какой-то свой вариант?
@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();
}
}
Дорогие подписчики канала, предлагаю потренироваться :)
Дорогие подписчики канала, предлагаю потренироваться :)
Вопрос, при создание union используеться:HashSet union = new HashSet(hashSet1);
В чём проблема использвать это? (среда разработки ругается)
HashSet union = new HashSet;
Я так понимаю потому что в таком раскладе не выделяется память а просто ссылается?
Или в чём проблема
new HashSet писать нельзя. У конструктора всегда есть круглые скобки.
А почему у меня при объединении (Union) не добавился 0? У меня hS1 - 1,2,3 hS2 - 0,1,2 А при объединении hS1.addAll(hS2) - получилось 1,2,3
Чтобы ответить на ваши вопросы, необходимо увидеть скрины кода.
@@programaniya спасибо что откликнулись, я уже разобралась правда) просто сама допустила ошибку про не внимательности) У вас отличная подача материала, и вообще огромное спасибо что вы есть
Все равно не совсем понятно, где это применять. Но методы интересные конечно у SET
Это становится понятно только тогда, когда на практике вам необходимо работать с коллекцией элементов. И уже в зависимости от того, какими свойствами данная коллекция должна обладать (по техническому заданию), вы сможете выбрать необходимую, наиболее подходящую.
В любом месте, где нужно хранить такие значения, которые могут повторяться, но нам нужны всего один раз. Например, мы организовываем праздник и каждый посетитель хочет, чтобы там присутствовало конкретное блюдо. Для этого нужно, чтобы повар умел готовить это блюдо. мы создаём hashset и записываем в него блюда, которые сказали нам пользователи. Нам не важно, если несколько пользователей назвало одно блюдо. А потом мы работаем с элементами этого сета и проверяем, умеет повар готовить заданное блюдо или нет. Если умеет, то идём дальше. Если не умеет, то даём поводу задание научиться.
👍
автор бакинец?
бакинский акцент чувствуется)
Да =)
@@programaniya O'zbekistannan Salam qaqas
Videolarin qeseydi. Minnatdaram
Teshekkur edirem!
Рассказываешь конечно хорошо. Но звук это просто издевательство над людьми невозможно слушать просто
А что со звуком?
@@programaniya Гул какой то стоит
Согласен, будто собака лает
Удаляй это видео лучше