Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
 Аватар для Dark_Spirit
0 / 0 / 0
Регистрация: 19.02.2019
Сообщений: 41

HashSet

10.09.2019, 08:54. Показов 2990. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
HashSet позволяет внести одинаковые элементы. Я так понимаю и идентичность обосновывается на хешах, которые совпадают, но тем не менее удаётся внести одинаковый элемент. В чём может быть просчёт? (хэш функцию переопределял)
C#
1
2
3
4
5
6
7
8
9
10
11
        public void ListFieldsTests(string data1, string data2, bool same)
        {
            var field1 = ArtificialIntellectTests.ParseField(data1);
            var field2 = ArtificialIntellectTests.ParseField(data2);
            var hash1 = field1.GetHashCode();
            var hash2 = field2.GetHashCode();
            Assert.AreEqual(field1, field2); //выполняется
            Assert.AreEqual(hash1, hash2); //выполняется
            GameField.Fields.Add(field1);
            GameField.Fields.Add(field2); // почему то вдруг тоже выполняется...
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.09.2019, 08:54
Ответы с готовыми решениями:

HashSet
кто может дать полное описание класса HashSet<T>???

Contains for HashSet
Приветствую! Не находит слово: "Москв" HashSet<string> totalCity = new HashSet<string>(); using (StreamReader sr =...

Hashset и Dictionary
Есть структура. Какой интерфейс нужно реализовать, чтобы при работе с Hashset<MyStruct> и Dictionary<MyStruct, T>, объекты моей...

4
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,766
10.09.2019, 09:00
Лучший ответ Сообщение было отмечено Dark_Spirit как решение

Решение

Цитата Сообщение от Dark_Spirit Посмотреть сообщение
почему то вдруг тоже выполняется...
Так а возвращает-то оно что? В исходниках говорится:
Adds value to HashSet if not contained already
Returns true if added and false if already present

https://referencesource.micros... 94f8fc999b
Так что да, оно не падает, просто оставляет колелекцию в неизменном состоянии при попытке добавить дублирующий элемент.
1
 Аватар для Dark_Spirit
0 / 0 / 0
Регистрация: 19.02.2019
Сообщений: 41
11.09.2019, 15:31  [ТС]
Цитата Сообщение от kotelok Посмотреть сообщение
Так а возвращает-то оно
true:
Миниатюры
HashSet  
0
1341 / 920 / 265
Регистрация: 08.08.2014
Сообщений: 2,766
11.09.2019, 15:39
Dark_Spirit
В коде есть:
C#
1
2
3
if (m_slots[i].hashCode == hashCode && m_comparer.Equals(m_slots[i].value, value)) {
    return false;
}
1
 Аватар для Dark_Spirit
0 / 0 / 0
Регистрация: 19.02.2019
Сообщений: 41
11.09.2019, 16:22  [ТС]
Цитата Сообщение от kotelok Посмотреть сообщение
В коде есть
Я так понимаю это исходный код. Тут сказано что если одновременно совпадают хеши и обекты равны (что именно так), то добавление не происходит (а вот тут наоборот, всё-таки добавляется).

Добавлено через 8 минут
Переопределил equals - помогло. Хотя странно, до переопределения утверждение -

Добавлено через 59 секунд
C#
1
Assert.AreEqual(field1, field2); //выполняется
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.09.2019, 16:22
Помогаю со студенческими работами здесь

Заполнить HashSet из строки
Добрый день всем. Есть строка: 0102,0103,0490,0690, Научите из нее заполнить HashSet, где бы каждый его элемент содержал только:...

Работа с множеством (HashSet и т.д.)
Предположим есть класс Person public class Person { public string firtsName; public string lastName; } Необходимо...

Превратить Enumerable<T> в HashSet<T>
Имеем Enumerable&lt;T&gt; заполненный значениями, нужно превратить в HashSet&lt;T&gt;, ищу красивое решение, т.к. перебор с добавлением мне чет не...

Выведение HashSet в TextBox
Как вывести HashSet в TextBox? т.е. чтобы все значения HashSet подряд были написаны в TextBox?

Работа с HashSet на формах
Доброго времени суток. Моя задача - создать приложение для работы с коллекцией HashSet. Ступор возникает в моменте выполнения свойства...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru