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

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

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

8 ответов

15 просмотров

Вообще это для бэка надо. На вебсокетах. Есть пара, где сессия это ключ, значение это некоторое событие в котором участвуют другие пользователи. Когда в одну сессию прилетает пакет данных, я по сессии нахожу событие и что-то с ним делаю. Далее нужно всех юзеров оповестить об изменениях. То есть для каждого юзера найти сессию и отправить им пакет данных. А сессия - это ключ в таблице. Хочу снизить сложность алгоритма с 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
не не, это не то. Вот ты в мапе находишь значение...

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

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

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

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта