Получить объект из hashset в С#
Возможный дубликат:
Почему я не могу получить элемент из HashSet без перечисления?
Мне нужно добавить много объектов в Set.and, я должен получить их очень быстро. Единственный способ, который я знаю, - использовать хэш. Но класс HashSet в С# не содержит метода Get. Класс словаря не полезен, поскольку поиск объекта очень трудоемкий в словаре.
Ответы
Ответ 1
HashSets в основном используются для проверки того, включен ли объект в коллекцию. Это un-orderd и un-sorted, не имеет индекса, который можно было бы использовать для извлечения объекта.
Если вам нужно хранить и извлекать объекты, используйте другие типы коллекций, такие как List, HashTable и т.д.
Ответ 2
HashSet представляет собой ряд значений. Вы можете посмотреть, установлено ли определенное значение в наборе с помощью Contains()
. Словарь предназначен для хранения объектов и получения его хешем (ключом).
using System;
using System.Collections.Generic;
namespace ConsoleApplication1
{
class Program
{
public enum EnumA
{
One,
Two,
Three,
Four
}
static void Main(string[] args)
{
HashSet<EnumA> test = new HashSet<EnumA>();
test.Add(EnumA.Four);
Console.WriteLine("Contains one:");
Console.WriteLine(test.Contains(EnumA.One));
Console.WriteLine("Contains four:");
Console.WriteLine(test.Contains(EnumA.Four));
Console.WriteLine();
Console.ReadLine();
return;
}
}
}