powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
16 сообщений из 41, страница 2 из 2
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647103
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutЕще раз хочу возвратится к теме сравнения хешсетов. Есть метод setequal(object) - достаточно ли его для автоматического сравнение двух хешсетов? Или надо наследование Hashset<T> если он не запечатан, и переопределение метода equal(), где надо проверять есть ли обьект хешсетом, имеет ли он одинаковое количество компонентов что и исходный, и есть ли все элементы проверяешего хешсета в исходном через foreach() и contain(...)? В таком случае можно достигнуть равности хешсетов.
Дурью вы маетесь. Enumerable.SequenceEqual(TSource) Method (IEnumerable(TSource), IEnumerable(TSource), IEqualityComparer(TSource)) (System.Linq)
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647202
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написать все одним хотя и очень сложным и очень общим методом - наверное просто. Но я б даже не хотел применять IequalityComparer - задача скорее была на алгоритмы, на которую надо была потратить 20-30 мин., потому знать очень тонкие детали хешсетов или шарпа здесь ни к чему. Но я никогда не расширял стандартные колекции потому мне это в новинку, а это сделать наверное надо если переопределять метод еquаl. Я думаю одними масивами здесь трудно обойтись - если не создавать новый масив каждый раз при добавление нового элемента в список, который должен быть множеством.
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647256
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, интересный вопрос. Equals() - это проверка на равность обьектов хешсетов, а мне надо проверить равность множества обьектов созданных разными обьектами хешсетов. Setequals() проверяет на равность элементов но если элементы равные (doublе например) по значению но ссылка на их wrаppеrs разные? Или я например не знаю об этом методе, например пришел из джавы, или надо собственный метод - что применять статический extension method?
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647277
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutНет, интересный вопрос. Equals() - это проверка на равность обьектов хешсетов, а мне надо проверить равность множества обьектов созданных разными обьектами хешсетов. Setequals() проверяет на равность элементов но если элементы равные (doublе например) по значению но ссылка на их wrаppеrs разные? Или я например не знаю об этом методе, например пришел из джавы, или надо собственный метод - что применять статический extension method?
Генерик-коллекции не делают боксинг для значимых типов.
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647281
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Генерик хешсеты не переопределяют equals() - setequal() допускают дубликаты и другие колекции - вот прочитал пару минут назад. Значит остается метод разширение или просто обычный метод класа для сравнение двух созданных хешсетов на основание элементов столбца масива. Потому мой предложеный выше способ сравнение хешсетов должен подойти или он в чем то неправильный?
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647717
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slant-shadow,
Код: c#
1.
var result = MyArray.Distinct();
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39647803
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stut,

хешсет это целое число, то есть при количество вариантов > int.Max вероятность совпадения хешей между 2 элементами 100% (формально). На самом деле, если ты очень визучий, можно получить в множестве на 100000 элементов 2 хешсета одинаковые, ведь сами объекты тоже не целые числа.
В Hashset<T> вычисляется не только кеш, для всех хешей создаются корзины, в 1 корзину для 1 хеша попадают все элементы с одинаковым хешем, если в корзине больше 1 элемента его поиск будет по методу Equals.
Примерно такая логика
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39649583
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В моем случае надо было hashset<double>. И что невозможно сравнить два хешсета посредством setequal(hashset<double>) или через кастомный метод что сперва сравнивает количество элементов в хешсетах, и если они равны проверяет наличие каждого элемента одного хешсета в другом хешсете - через contain() - если всегда возвращает truе - значит и элементы идентичны в неповторяющих последовательностях однаковой длины?
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39649587
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutВ моем случае надо было hashset<double>
Ужос.

Ты в курсе что double и == несовместимы?
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39649606
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T, Ужос? Большой? А где у меню использование double и ==? Мне надо именно найти было одинаковые множества, а не hashset/set.
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39649658
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39650170
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где я упоминал об double и "=="? Мне надо было найти одинаковые множества в столбцах я и предположил что это должны быть числа типа double - хотя в шарпе есть более узкий тип decimal.
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39650329
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stutГде я упоминал об double и "=="?
тут
stutВ моем случае надо было hashset<double>
внутри hashset используется ==
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39650403
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TstutГде я упоминал об double и "=="?
тут
stutВ моем случае надо было hashset<double>
внутри hashset используется ==
на самом деле, нельзя так ультимативно говорить, что сравнивать double нельзя. Вполне можно. Double это просто набор байт, разделенных на мантиссу и экспоненту. Которых вполне можно сравнить. Сравнивать их нельзя если вы используйте какие то вычисления. Так как работа с такими типа ведет к погрешности.
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39650418
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TstutГде я упоминал об double и "=="?
тут
stutВ моем случае надо было hashset<double>
внутри hashset используется ==
Он используется не внутри hashset, а, как ни странно, внутри самого double - и в Equals, и в перегруженном опреаторе ==, и хэшсет вызывает эту операцию опосредованно через имплементацию IEqualityComaprer<T> (EqualityComparer<T>.Default, если в конструкторе хэшсета IEqualityComaprer<T> не задан явно).
...
Рейтинг: 0 / 0
Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
    #39654588
stut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да проверял я уже как неделю назад. Все работает с Hashset<double>.SetEqual(Hashset<double> object). И с цыфрами после точки, и однаковими числами в разном порядке такой метод возвращает truе. Хотя я при проверке использовал числа лиш с одной цыфрой после точки.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Найти в массиве повторяющиеся элементы и записать только уникальные элементы в новый масси
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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