А разве то, что idea не подсвечивает подмену массива или инициализацию массивом с недостаточной длиной это не статический анализатор кода? Для компиляции же отдельная кнопка.
@luckyshaqqq5 күн бұрын
Итоговая длина массива не может превышать 2^32; 10х20 прокатит, а очень большие нет. Нужна проверка длинны height*length <= Integer.MAX_VALUE. Еще можно передать отрицательные числа в get/set. Нужны проверки.
@rndofpipowe5 күн бұрын
Хм, если всё так просто, то почему этого чуда до сих пор нет в стандартной библиотеке? Или есть, но я не знаю? А индексатор приделать можно, ну чтобы что-то вроде someData[i,j] = 1024; написать?
@arhitutorials5 күн бұрын
Потому что это никому не нужно) Я вот сам даже не помню, когда мне в последний раз был нужен двумерный массив.
@sleeply4cat5 күн бұрын
потрясающее открытие.
@romawar18696 күн бұрын
потрясающе , кажется что уже все , но ты умеешь удивить новой темой , а главное заинтересовать , на одном дыхании смотрю
@Constantine19756 күн бұрын
Спасибо Сергей! Я даже как-то не задумывался о том как хранятся многомерные массивы в памяти :)
@vlatterran6 күн бұрын
Как будто бы делать обёртку над одномерным массивом и утверждать что это "настоящий" двумерный массив - странно Если уж докапываться до терминов, то "настоящие" двумерные массивы в линейную память вы не сможете положить)
@arhitutorials6 күн бұрын
@@vlatterran почему не смогу положить? Я +- воспроизвёл как устроены 2d массивы в языках типа c, pascal, fortran, и прочих. Что в этом странного?
@vlatterran6 күн бұрын
@arhitutorials с точки зрения памяти у вас одномерный массив, и то что вы интерпретируете индексы немного по другому не делает его по настоящему двумерным Если уж говорить про оптимизации типа "считавание сразу нескольких ячеек в кэш", то сможете ле вы проинтегрироваться по колонкам эффективно в такой реализации? Насколько я понимаю - нет. Потому что у вас ячейка (0, 0) и (1, 0) не находится рядом в памяти
@arhitutorials6 күн бұрын
@@vlatterran Что Вы понимаете под "по настоящему двумерным"? Никаких двумерных массивов в компьютере не существует, есть только память, организованная линейно. А все остальное лишь абстракция, которую мы сверху добавляем, в зависимости от того, что хотим в результате получить. Теперь про оптимизацию. Пусть стоит задача увеличить значение каждой ячейки моего 2d массива на 1. Так как у меня там линейный массив под капотом, я могу сделать специальную реализацию, которая просто пройдет последовательно по всем элементам одномерного массива и добавит везде 1. Возможность работать с двумерным массивом как с одномерным имеет свои конкретные преимущества.
@vlatterran6 күн бұрын
@@arhitutorials я об этом и говорю, что двумерный массив на основе одномерного не более настоящий чем массив массивов То что в каких-то аспектах одномерный массив эффективнее чем массив массивов я не спорю
@den92616 күн бұрын
спасибо, было интересно .....поздравляю вас с новым подписчиком )
@EdwardNorthwind6 күн бұрын
Массивы? Ими еще пользуются? Я думал сейчас всё на коллекциях
@rndofpipowe4 күн бұрын
Начал было писать возражение, а потом спросил себя "а ты дружок когда последний раз использовал массив?" :))
@user-zm9on5rb8z7 күн бұрын
Сергей, а можно какие-то темы разобрать типа Spring AI?😊
@McMouse887 күн бұрын
Спасибо Сергей, интересный ролик
@andrew20tv7 күн бұрын
Должно же быть arrayData[i * length + j]. И лучше добавить проверку индексов в get, потому что странно будет, что в двумерном массиве 2х2 я смогу обратиться к элементу [0, 2] и программа ничего мне не скажет на это
@AlexSmile-y2x7 күн бұрын
Ты Легенда, Сергей!
@Nidvoraich7 күн бұрын
Соседи на клавиатуру не жалуются?)
@arhitutorials7 күн бұрын
Люблю полноразмерные клавиатуры с нормальным ходом клавиш и откликом. Соседи не жалуются, терпят молча)
@vitaliy01928 күн бұрын
Сам придумал, сам поверил. Всё по фэншую. Ога.
@arhitutorials8 күн бұрын
@@vitaliy0192 с самого утра ждал этого комментария)
@rndofpipowe5 күн бұрын
@@arhitutorials Значит не всё потеряно, остались думающие люди :)))
@agusev308 күн бұрын
Спасибо за интересную тему. БТВ, на котлине с operator fun бьіло бьі красивее
@ЕвгенийКрупин-м2з8 күн бұрын
Кто Си читал, тот это знает.
@bulatnikoffdmitrii44388 күн бұрын
Класс👍, спасибо.
@Lazeyus8 күн бұрын
Так интересно рассказываете, спасибо
@Hopkroft8 күн бұрын
Сергей, спасибо за видео! Надеюсь что у вас будет возможность выкладывать побольше уроков :)
@arhitutorials8 күн бұрын
Я тоже надеюсь. Столько дел разных, не успеваю. В следующем году надеюсь по легче будет, смогу чаще выходить в эфир.
@LAZIO148 күн бұрын
Серега, привет! Рад тебя видеть! Благодарю
@mihaelbablovich94638 күн бұрын
Спасибо за ролики, и вообще за весь канал 👍
@mafi0za2878 күн бұрын
Хорошее видео. P.S. Напомнило мне то, что можно было получить в качестве результата "мусор", если выйти за границы массива в C.
@StethemRulit8 күн бұрын
Так как двумерный массив в java это массив ссылок на одномерные массивы, мы можем присвоить элементу двумерного массива null. А если одномерный массив это массив объектов, то и там может быть null. А если такой массив возвращает метод, то по хорошему там каждый элемент, на любом уровне, нужно проверять на null. Так что лучше использовать класс обертку, который не может присвоить null элементам.
@МихаилВишняков-т6ф8 күн бұрын
Спасибо за разяснение, никогда об этом не задумывался, а тут вот оно что)) пс там в формуле получения и записи от высоты 1 отнимать надо, или уходим на следующий массив
@elseff8 күн бұрын
Спасибо
@Atamah1238 күн бұрын
было реально очень интересно. Спасибо
@OleksiiVasylenko-r1j8 күн бұрын
Ебаться-улыбаться. Вот это контент
@Rommel775514 күн бұрын
Хорошо объясняете.🙂
@ВячеславЗайцев-в9и19 күн бұрын
Спасибо!
@asunali31325 күн бұрын
в курсе javarush есть схожая задача. и во многих комментариях к этой задаче есть ссылка на это видео. у этих комментариев много лайков) спасибо вам большое.
@user-segadevАй бұрын
несколько лет назад смотрел, все понял) но приходится пересматривать перед собесами, забыл уже подробности. Автору респект !!!
@arsenazaryan5157Ай бұрын
ни как не мог вкатиться в понимания в то что есть принимаемый тип и добавляемый тип. Только в конце зацепился за резюмирующую таблицу в результате проникся пониманием что это две разности. Спасибо
@2TPstudioАй бұрын
Погодите-ка, а кто-то понял что за шорткат был использован на 5:23 для заполнения листа значениями?
@spacecowboy3000Ай бұрын
Супер, спасибо!
@waldstalwaldstal3654Ай бұрын
Огромное спасибо!!!!!!!!!!!!!!!!!!!!!!
@freeblind7278Ай бұрын
Начал слушать, очень все понятно, и разжовано, этот урок великолепен.
@ukr-pigАй бұрын
Привет.А можешь подсказать что происходит внутри sinhronized{ } ?
@arhitutorialsАй бұрын
Ничего не происходит. Просто чтоб зайти в этот блок, потоку нужно захватить монитор. Монитор может держать только один поток. Таким образом, код в блоке synchronized может выполняться только одним потоком, который в данный момент владеет монитором.
@alexandrkomar4741Ай бұрын
Спасибо. Вот только не понял как с Iterable работать. Нужно разобраться
@McMouse88Ай бұрын
Сергей интересно было бы посмотреть про синхронизаторы CountDownLatch, Semaphore и CyclicBarrier )))
@МарпехДалласскийАй бұрын
а почему в реализации equals для иммутабельного объекта достаточно сравнения по хэшу? хэш же может совпадать у разных объектов
@arhitutorialsАй бұрын
Для equals недостаточно. В случае, если хэши двух объектов одинаковые, надо разбираться, что у них внутри.
@NKozchenkoАй бұрын
Спасибо большое Сергей за такие видео, наверное единственный канал благодаря которому я могу понять всю тему сразу! Хотел также вступить в ваш телеграмм канал, но ссылка почему то недоступна(
@rahmanbashr7347Ай бұрын
почему в дереве проекта в папке rec нет папки лайаут? из.за этого я не могу начать разработку приложения, я уже молчу о том что виртуальное устройство не запускается
@andreyusp2867Ай бұрын
Спасибо
@alexandrkomar4741Ай бұрын
Здравсвуйте. Не находит ваш тг канал. Вы его удалили?
@arhitutorialsАй бұрын
@@alexandrkomar4741 это не канал, а группа для общения. Сделал ее закрытой чтоб остановить нашествие ботов. Зайти можно по ссылке: t.me/+TH9AoBq_ct6RYZgz
@ЮкаРазрабАй бұрын
Спасибо за видео. Подскажите, подходит ли аларм менеджер для короткой переодической работы? У меня задача делать запросы раз в 5 минут, если не получен ответ, то делать раз в 10 секунд
@arhitutorialsАй бұрын
@@ЮкаРазраб если нужно гарантированно повторять действие каждые 10 секунд, то для этого надо использовать foreground service.
@MechAlexanderАй бұрын
Спасибо
@alexandrkomar4741Ай бұрын
Здравсвуйте. Можете объяснить, как с помощью рекурсии проходить по элементам массива в случае его сортировки методом слияния либо быстрой сортировкой?
@arhitutorialsАй бұрын
Здравствуйте. Я подумаю над этим. Уверен, что это можно сделать.