Операции над Hashtable в C # - PullRequest
       3

Операции над Hashtable в C #

2 голосов
/ 09 августа 2010

Использование Hashtable Я хочу, чтобы несколько объектов отображались на один и тот же ключ.Например, Key - это «Age», а Values ​​являются объектами структуры «Student».

Полагаю, что для восприятия будет своего рода связанный список с Key, действующим как «Head» 25-> obj1->obj2-> obj3

Вот мои вопросы:

Правильно ли приведенное выше представление?Если нет, то какую структуру данных можно использовать для достижения того же самого?

Могу ли я найти конкретное поле в приведенном выше представлении данных.Например, когда я достигаю клавиши 25, я ищу имя 'Скотт' в строке.Смогу ли я остановить / получить указатель на объект, содержащий поле Скотта?

Спасибо!

Ответы [ 4 ]

7 голосов
/ 09 августа 2010

Если вы используете C #, лучшим вариантом, вероятно, будет (что, по сути, то, что вы предлагаете):

var collection = new Dictionary<Age, List<Student>>();

Предположим, что оба типа - Возраст и Студент.

3 голосов
/ 09 августа 2010

Только одно значение может быть сохранено для ключа. Так как насчет Hashtable<int, List<Student>>?

1 голос
/ 09 августа 2010

Если у вас уже есть коллекция всех студентов на момент создания этой структуры данных, вы можете сделать

var lookUp = Students.ToLookUp (student => student.Age);

Недостатком является то, что структура данных Lookup <K,V> является неизменной.,Если это не вариант, структура Dictionary<int, List<Student>> может быть более подходящей, как уже упоминали другие.

0 голосов
/ 09 августа 2010

Здесь нет неправильной структуры данных для использования, только некоторые структуры для хранения будут лучше соответствовать вашим потребностям в зависимости от того, что вы хотите сделать с результатами, которые имеют ключ к возрасту.*

Вы указали, что хотели получить возможность поиска предметов по названию, как только вы получите учеников определенного возраста.В этом случае вы захотите иметь IDictionary<string, Student>, где ключом является имя студента.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...