kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
Анонимный пользователь
Вопрос

Существует ли в .Net структура данных "Set"?

В идеале, я ищу шаблонный логический класс Set. Он должен иметь все стандартные операции над множествами, такие как объединение, пересечение и т.д., и уничтожать дублирующиеся элементы.

В итоге я создал свой собственный класс множеств на основе C# Dictionary<>- просто используя ключи.

48 2008-08-13T23:03:42+00:00 6
 Chris
Chris
Редактировал вопрос 25-го августа 2008 в 12:57
Программирование
data-structures
c#
set
Matt Hamilton
Matt Hamilton
13-го августа 2008 в 11:05
2008-08-13T23:05:20+00:00
Дополнительно
Источник
Редактировать
#8414388

HashSet<T> - это самое близкое, что вы можете получить, я думаю.

 spender
spender
Редактировал ответ 11-го марта 2018 в 1:15
44
0
Brad Leach
Brad Leach
13-го августа 2008 в 11:44
2008-08-13T23:44:59+00:00
Дополнительно
Источник
Редактировать
#8414391

Лучшее внедрение набора, которое я видел, является частью замечательного Wintellect' s Коллекции Власти: http://www.codeplex.com/PowerCollections.

Внедрение набора может быть найдено here:< br/> [http://www.codeplex.com/PowerCollections/SourceControl/FileView.aspx? itemId=101886& changeSetId=6259] [2] < br/> Это начинает все ожидаемые операции по набору (союз, пересекитесь, и т.д.).

Надежда это помогает!

[2]: http://www.codeplex.com/PowerCollections/SourceControl/FileView.aspx? itemId=101886& changeSetId=6259

15
0
Dale Ragan
Dale Ragan
13-го августа 2008 в 11:08
2008-08-13T23:08:53+00:00
Дополнительно
Источник
Редактировать
#8414389

Нет, во фреймворке нет такой возможности. Существует реализация с открытым исходным кодом, которую использует большинство проектов (т.е. nHibernate) под названием Iesi.Collections. Вот статья CodeProject о ней:

http://www.codeproject.com/KB/recipes/sets.aspx

Dale Ragan
Dale Ragan
Редактировал ответ 13-го августа 2008 в 11:12
10
0
Stephen franklin
Stephen franklin
14-го октября 2008 в 4:05
2008-10-14T04:05:00+00:00
Дополнительно
Источник
Редактировать
#8414392

Вы проверили HashSet в 3,5?

 Powerlord
Powerlord
Редактировал ответ 24-го ноября 2008 в 5:30
9
0
 lomaxx
lomaxx
13-го августа 2008 в 11:17
2008-08-13T23:17:00+00:00
Дополнительно
Источник
Редактировать
#8414390

Я не думаю, что в c# есть что-то встроенное, но я знаю, что в сети есть несколько реализаций. Есть также несколько хороших статей на эту тему:

Это часть 6 из серии статей об эффективном представлении структуры данных. Эта часть посвящена представлению множеств в C#.

Реализация коллекции множеств
Реализация класса множеств
Еще одна реализация класса множества

И наконец...

Я сам использовал эту библиотеку в качестве основы для реализации множества, которую я сделал год или около того назад.

6
0
 dharmatech
dharmatech
10-го мая 2018 в 1:51
2018-05-10T01:51:59+00:00
Дополнительно
Источник
Редактировать
#8414393

Here' s простое внедрение:

public sealed class MathSet<T> : HashSet<T>, IEquatable<MathSet<T>>
{
    public override int GetHashCode() => this.Select(elt => elt.GetHashCode()).Sum().GetHashCode();

    public bool Equals(MathSet<T> obj) => SetEquals(obj);

    public override bool Equals(object obj) => Equals(obj as MathSet<T>);

    public static bool operator ==(MathSet<T> a, MathSet<T> b) =>
        ReferenceEquals(a, null) ? ReferenceEquals(b, null) : a.Equals(b);

    public static bool operator !=(MathSet<T> a, MathSet<T> b) => !(a == b);
}

Использование в качестве примера:

var a = new MathSet<int> { 1, 2, 3 };
var b = new MathSet<int> { 3, 2, 1 };

var c = a.Equals(b);                        // true

var d = new MathSet<MathSet<int>> { a, b }; // contains one element

var e = a == b;                             // true

Посмотрите этот вопрос для того, почему этот подход рассмотрели по 'HashSet'.

0
0
Похожие сообщества 6
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 763 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 428 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
C#/.NET Для Новичков
C#/.NET Для Новичков
293 пользователей
Группа создана для тех, кто изучает язык программирования C#. Верховный главнокомандующий: @BlackDeveloper Оффтоп - разрешен в меру, реклама - бан.
Открыть telegram
ext
ext
31 пользователей
Общение на темы YouTube канала и программирования. Вакансии не размещаем. Основной канал: @extremecode
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 1 день назад
2
Денис Васьков
Зарегистрирован 2 дня назад
3
Dima Patrushev
Зарегистрирован 4 дня назад
4
sirojidddin otaboyev
Зарегистрирован 1 неделю назад
5
Елена Гайдамамакинат
Зарегистрирован 1 неделю назад
ID
KO
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией