169 похожих чатов

А какой юзкейс этого у тебя? Какая проблема решается? Мне

кажется тащить гуаву, ради одной коллекции, это жестко%)

8 ответов

4 просмотра

Вообще это для бэка надо. На вебсокетах. Есть пара, где сессия это ключ, значение это некоторое событие в котором участвуют другие пользователи. Когда в одну сессию прилетает пакет данных, я по сессии нахожу событие и что-то с ним делаю. Далее нужно всех юзеров оповестить об изменениях. То есть для каждого юзера найти сессию и отправить им пакет данных. А сессия - это ключ в таблице. Хочу снизить сложность алгоритма с O(n) до O(1)

Тоже думаю что гуаву тащить для этого так себе идея. Поэтому смотрю в сторону двунаправленного словаря. Вроде МАП можно нехитрым способом расширить

Хотяяя... есть другая идея. Передавать юзер айди в заголовке. А мапу структурировать как <UserId, ClassWithEventWithSessionWithParticipants>>

Din-R Islamov
Хотяяя... есть другая идея. Передавать юзер айди в...

Вощм временно сделал вот так fun Map<K, V>.getKey(value: V) : K? = entries.associate { it.value to it.key }[value] Хотя это один проход по списку, в любом случае O(n)

Din-R Islamov
Вощм временно сделал вот так fun Map<K, V>.getKey...

чисто из интереса, это те самые двусвязные списки где каждый элемент хранит ссылку на соседние? а то когда смотрел базовые курсы еще по питону, я думал что это нигде вообще не применить в прикладном программировании или это не то?

не не, это не то. Вот ты в мапе находишь значение по ключу, сложность O(1). То есть неважно насколько большая мапа, время выполнения операции от размера мапы не зависит. А вот если у тебя есть значение, и тебе нужно найти под каким ключом она лежит, то тебе надо перебором найти тот самый entry в мапе и вернуть его ключ. Тут скорость выполнения операции будет сильно зависеть от размера мапы. Поэтому под капотом таки хструктур как правило две мапы, они синхронизированы. там на каждое entry создается два экземпляра <K, V> и <V, K>. если очень поверхностно, на деле все сложнее

Din-R Islamov
не не, это не то. Вот ты в мапе находишь значение...

понял, но по описанию всеж похоже на то что каждый элемент хранит ссылку на какую-то позицию, но лучше не буду ворошить, а то я не сталкивался в практике

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
53
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
А чего сейчас в моде вместо Error для эксепшенов? А то я тут внезапно узрел что он не рекомендуется :) У Try::Tiny какой-то совершенно ужасный синтаксис если надо конкретные э...
Denis F
16
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
Карта сайта