|
Master of Orion
|
||
Коллекция без дубликатов21.06.2012, 02:49. Показов 26280. Ответов 42
Метки нет (Все метки)
Здравствуйте. Возник вопрос: мне нужно сделать коллекцию (т.е. динамический массив), но в нем не должно содержаться дубликатов, потому что их накапливается очень много и начинает ругаться на недостаток памяти. Для ликвидации этого решил сделать не List<Point>, а SortedSet<Point>, но тогда он начинает ругаться
0
|
||
| 21.06.2012, 02:49 | |
|
Ответы с готовыми решениями:
42
Сохранение без дубликатов
|
|
Master of Orion
|
|
| 23.06.2012, 14:43 [ТС] | |
|
kolorotur, нет, там я просто ставил условие, элементы там вообще никак не сортировались. Во втором случае да, у меня уже n^2/2; потому что сначала сравниваем с одним, потом с двумя, и только в конце сравниваем с n.
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 23.06.2012, 15:04 | |
|
Tessen, покажите пожалуйсте код, где происходит сравнивание, а то не совсем понятно о каких замерах идет речь.
Добавлено через 34 секунды Psilon, так а чем тот же Distinct или хэш не устраивает? Всяко ведь быстрее.
0
|
|
|
Master of Orion
|
|
| 23.06.2012, 15:10 [ТС] | |
|
kolorotur, не умею им пользоваться, вот что. Я спросил, как можно было бы с ним реализовать, но никто мне не ответил.
Еще раз: имеется точка. Она преобразуется в цикле 10 раз, записывается в новый массив. Затем каждая из этих точек преобразуется 10 раз, получаем 100 точек. Делаем столько итераций, сколько нужно пользователю, хотя фактически больше 5 прироста не дает. Естественно, если точка уже один раз была обработана, то второй раз крутить 10 раз её не надо, потому что т.к. преобразование одно и то же, то мы получим тот же результат, который уже есть. Как реализовать я придумал. Как реализовать оптимально я не знаю. Может, подскажете?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
||||
| 23.06.2012, 15:21 | ||||
|
Psilon, несколько вопросов для уточнения:
0
|
||||
|
Master of Orion
|
|||||||||
| 23.06.2012, 15:26 [ТС] | |||||||||
|
kolorotur,
0
|
|||||||||
|
713 / 680 / 126
Регистрация: 30.03.2012
Сообщений: 1,124
|
||||||||||||
| 23.06.2012, 15:47 | ||||||||||||
sw1 - 70-75 если я изменяю цикл создания листов так:
не понимаю почему так?
0
|
||||||||||||
|
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
|
|
| 23.06.2012, 16:24 | |
|
Tessen, в чем вообще смысл сравнения времени даже не разных реализаций, а вообще разных алгоритмов?
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||||
| 23.06.2012, 18:42 | |||||
|
1
|
|||||
|
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
|
||
| 23.06.2012, 19:53 | ||
|
0
|
||
|
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
|
|||||||||||||||||
| 23.06.2012, 22:52 | |||||||||||||||||
1
|
|||||||||||||||||
|
Master of Orion
|
|
| 23.06.2012, 23:14 [ТС] | |
|
hiddentool, а за счет чего это ускорение? Он не упорядочивает структуру, а просто проверяет, нет ли её внутри, но все равно непонятна такая большая разница... )) В принципе вы правы, теперь 17-20 мс вместо 28-33
0
|
|
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 23.06.2012, 23:21 | |||
|
Во втором варианте ищутся уникальные элементы из обеих коллекций, а в первом - элементы из первой коллекции, которых нет во второй коллекции. ![]() Как предложили выше - замените SortedList на HashSet (сортировка вам ни к чему) и не создавайте новый список после каждой обработки - лучше просто не добавляйте уже имеющиеся в коллекции элементы. Сэкономите на памяти.
0
|
|||
|
Master of Orion
|
|||||||
| 23.06.2012, 23:31 [ТС] | |||||||
![]() Кстати, после этого перестала работать операция
Видимо, он копирует ссылку списка на временный список, а не сами значения...
0
|
|||||||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|||
| 23.06.2012, 23:37 | |||
|
А до тех пор будут болтаться в памяти, как известная субстанция в прорубе. И да, происходит присваивание ссылки, а не копирование значений.
0
|
|||
|
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
|
|
| 23.06.2012, 23:55 | |
|
Psilon, так покажите обновленный код, а то вентилятор топлива просит
0
|
|
|
Master of Orion
|
||||||
| 24.06.2012, 00:15 [ТС] | ||||||
|
Как можно увидеть, я свел появление новых переменных к минимуму, и все равно память с 10 до 13 растет (примерно по 200кб за нажатие на кнопку).
И еще вопрос: в чем разница между методами Invalidate и Refresh для графических компонент?
0
|
||||||
|
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
|
||
| 24.06.2012, 09:35 | ||
|
1
|
||
|
Master of Orion
|
|
| 24.06.2012, 12:30 [ТС] | |
|
hiddentool, логически это можно понять, но по сути? Он все равно проходит от начала до конца проверяя, нет ли в нем уже этой точки, вопрос только в том, что в одном случае он впихнет её в середину (а-ля очередь с приоритетом), а в другом просто в конец. Но и в том и в другом случае придется 4 указателя изменять: два указателя соседних элементов и 2 указателя самого элемента. Так почему же быстрее?
0
|
|
| 24.06.2012, 12:30 | |
|
При вводе в консоли "delete" записать новый массив без дубликатов
Добавить запись без дубликатов Объединение без удаления дубликатов Получение записей с сервиса без дубликатов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
|
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было
ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась.
Первый вариант. . .
|
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2.
Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
|
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет.
Но обычно это 50 лет и более.
Наверное, закисление почвы происходит сезонно в средней. . .
|
|
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|