Множественный список или словарь? - PullRequest
2 голосов
/ 11 мая 2019

Я работаю в C # в Unity3D. Мне нужна структура, чтобы сохранить некоторые значения. Мне нужно получить доступ к этой структуре по строковому индексу, а значения - GameObjects (но этот вопрос относится к любому возможному значению, оно то же самое). Я не знаю, сколько объектов я буду хранить в каждом индексе, поэтому он не может быть массивом. Я думал в

Dictionary<string,List<GameObject>>

но возможно ли добавить элементы в этот список в тот же момент, когда я добавляю индекс? Потому что, если мне нужно заполнить список ДО того, как добавить его в словарь, я могу иметь X списков и забыть о Словаре.

Какая структура лучше для этого?

1 Ответ

0 голосов
/ 11 мая 2019

Вы можете реализовать свой собственный мульти словарь

public class MultiDictionary<TKey, TValue> : Dictionary<TKey, List<TValue>>
{
    public void Add(TKey key, TValue value)
    {
        if (TryGetValue(key, out List<TValue> valueList)) {
            valueList.Add(value);
        } else {
            Add(key, new List<TValue> { value });
        }
    }
}

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

В качестве альтернативы вы можете создать Dictionary<TKey, HashSet<TValue>>, если вам нужно добавить уникальные значения, а порядок не имеет значения.

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