Size: a a a

Kotlin Community

2020 March 05

BP

Bogdan Panchenko in Kotlin Community
@rib_cage скажите на чем разрабатываете без фундамента тяжело что-то посоветовать
источник

AF

Alex F. in Kotlin Community
Bogdan Panchenko
Ну тогда вам по-любому ремонт, это уже не простая логика в флов, вам нужно разбить.

Если данные просто добавляются то это не затратно делать на юай, синхронизация может быть дороже.

Емитинг данных ваш уай должен быть в одном месте. Вот тут много вопрос про обновления данных и про систему где вы разрабатываете
Android
источник

KZ

Konstantin Zolotov in Kotlin Community
Konstantin Zolotov
А, понял. Ну короче, сейчас накидаю, как бы сделал я.
UPD: а не, фигню написал, щас еще подумаю
источник

AF

Alex F. in Kotlin Community
Я сделал combine флоу с данными из конфлэтед канала(asFlow), куда из UI пользователь отправляет тип сортировки. То есть он из обоих flow берет последние данные и сортировку и пересчитывавает все.
Если данных приходит немного, то все ок. Но  если данных очень много, offer в канал не присылает данные, видимо из-за того, что пул диспатчеоа перегружен. И оператор combine не получает актуальную сортировку.
источник

AN

Alexander Nozik in Kotlin Community
Да не надо делать это на флоу, нужно просто обычный колбэк сделать, дешевле будет, но честно, сил нет писать весь код. Он не очень простой с учетом замены сортировшика, там надо результат кэшировать и сбрасывать кэш на замену
источник

KZ

Konstantin Zolotov in Kotlin Community
Да почему, сам flow как раз нормально для такого, особенно когда речь о комбинировании. Нужно что-то придумать с сортировкой, например, хранить сортированный результат + сортировать новый кусок данных а потом смержить эти 2 списка.
источник

AF

Alex F. in Kotlin Community
Мне тоже в начале показалось, что флоу для этого подходит. Я подписываюсь на поток данных и отображаю их.
источник

BP

Bogdan Panchenko in Kotlin Community
Alex F.
Мне тоже в начале показалось, что флоу для этого подходит. Я подписываюсь на поток данных и отображаю их.
Все верно, но тут врывается сортировка
источник

AN

Alexander Nozik in Kotlin Community
Если вы сделаете сегментацию, то да. Но в целом, повторюсь, вы делаете терминальную операцию - сортировку. После этого работать с Flow - очень странная идея
источник

AF

Alex F. in Kotlin Community
Bogdan Panchenko
Все верно, но тут врывается сортировка
Да(
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Если вы сделаете сегментацию, то да. Но в целом, повторюсь, вы делаете терминальную операцию - сортировку. После этого работать с Flow - очень странная идея
+
источник

AN

Alexander Nozik in Kotlin Community
Просто логика того, что происходит при сортировке уже не описывается в терминах map-reduce, это просто большая сложная редукционная операция. Ее и надо делать отдельно
источник

AF

Alex F. in Kotlin Community
Окей, спасибо большое за идеи!
Пойду дальше думать, как это переписать.
источник

AN

Alexander Nozik in Kotlin Community
Я бы сделал сами данные, а рядом сортированный список - добавление элементов в него сильно дешевле, чем пересортировка. При замене сортировщика - сбрасываем и пересчитываем сортированный список из накопленных данных.
источник

AF

Alex F. in Kotlin Community
Alexander Nozik
Я бы сделал сами данные, а рядом сортированный список - добавление элементов в него сильно дешевле, чем пересортировка. При замене сортировщика - сбрасываем и пересчитываем сортированный список из накопленных данных.
да, сейчас попробую это вытащить в collect
источник

AN

Alexander Nozik in Kotlin Community
в принципе можно не держать отдельный массив, а перезаполнять новый сет из старого, но там надо тогда синхронизацию делать
источник

AF

Alex F. in Kotlin Community
Alexander Nozik
в принципе можно не держать отдельный массив, а перезаполнять новый сет из старого, но там надо тогда синхронизацию делать
у меня там LinkedHashMap сейчас, она за порядок отвечает.
Часто надо по индексу искать объект, чтобы посмотреть какие поля изменились, и нужна ли вообще сортировка.
Я поэтому и не стал брать SortedMap, что часто поиск нужен
источник

AN

Alexander Nozik in Kotlin Community
ну тут уже невозможно что-то посоветовать, поскольку где-то найдешь, где-то пореяешь. Сортировать на мапе не дешево
источник
2020 March 06

K

Kopusha in Kotlin Community
Как красиво прицепить к листу элемент, если он не null?
mutableListOf("foo").apply { bar?.let { this + it } }
или можно изящнее?
источник

КР

Кирилл Романенко in Kotlin Community
Kopusha
Как красиво прицепить к листу элемент, если он не null?
mutableListOf("foo").apply { bar?.let { this + it } }
или можно изящнее?
mutableListOf("foo") + listNotNull(bar)
источник