powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как найти и удалить дубликаты из "List`а
8 сообщений из 8, страница 1 из 1
Как найти и удалить дубликаты из "List`а
    #36489128
ssv22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется Список. Сколько там элементов заранее неизвестно, сколько совпадающих элементов тоже заранее неизвестно.
Нужно найти и удалить совпадающие элементы.
Куда копать - что-то "заклинило"...

Заранее спасибо!
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489141
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssv22Имеется Список. Сколько там элементов заранее неизвестно, сколько совпадающих элементов тоже заранее неизвестно.
Нужно найти и удалить совпадающие элементы.
Куда копать - что-то "заклинило"...

Заранее спасибо!

Берется первый элемент. Со второго и до конца ищутся и удаляются совпадающие с ним элементы (внутренний цикл). Потом берется второй элемент, с третьего и до конца ищутся совпадения. И так до предпоследнего оставшегося элемента (внешний цикл).
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489226
ssv22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ.
Но вообще-то про это я в курсе, просто захотелось узнать, а нет ли более эффективных алгоритмов...
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489227
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Access я бы поступил проще. Пройтись по элементам списка и затолкать все в коллекцию, которая сама не позволит иметь дубликаты. А потом обратное - коллекцию в роусоус списка. Типа такого
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
On Error Resume Next
    Dim i, s As Collection, p, v
    Set s = New Collection
    With Me.MyListbox
        ' поместить элементы списка в коллекцию
        For i =  0  To .ListCount
            s.Add .ItemData(i), .ItemData(i)
        Next

        ' создать новый набор для RowSource списка
        For Each p In s
            Debug.Print p
            v = v & """" & p & """;"
        Next
        .RowSource = Left(v, Len(v) -  1 )
    End With
Время исполнения не должно быть велико, поскольку оно пропорционально длине списка в первой степени.
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489235
ssv22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, вот это уже ближе к делу!
Бум думать...
А в Excel`e так нельзя?
Насколько я знаю, "коллекцию" можно делать и в Excel`e и в чистом VB...
Или тут какая-то хитрость?
Или это что-то типа БД получается?
Почему обязательно Access ?

PS. а то у меня в таком случае еще и Access "вырисовывается"...
Вообщем три проги у меня "завязаны" : SolidWorks + Excel + Access - соответственно, больше вероятности ошибок...

Потом, такой момент: когда моя программка считывает компоненты сборки (а это делается рекурсивно), то доходит до какого-то момента и - тормозит. Потом, подождет несколько сек. и опять начинает считывать...

В чем тут м.б. проблема?
Можно ли рекурсию заменить на "линейный" алгоритм?
Вроде что-то читал про это, но забыл :-(
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489247
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssv22А в Excel`e так нельзя?
Коллекции идут из ВБА. Следовательно есть и екселе. А вот, что там служит источником данных списка, сказать не могу, не знаю
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489488
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mds_world,

Расширенный фильтр
Dictionary
...
Рейтинг: 0 / 0
Как найти и удалить дубликаты из "List`а
    #36489520
ssv22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как вот "справиться" со счтыванием рекурсивного дерева - ни глубина, на степень вложенности - неизвестны?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как найти и удалить дубликаты из "List`а
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]