Я пишу очередь с определенным приоритетом. Его структура должна быть такой:
Priority(<int>) Data(List<Object>)
1 a, b, g, h
3 c, d, j
4 k
10 e, f, i
Мне нужно эффективно определить, существует ли список для данного приоритета; если нет, создайте список и добавьте сообщение, в противном случае добавьте сообщение в существующий список.
Я написал красно-черное дерево, но это кажется излишним для этого и, возможно, не самым быстрым решением. У него также есть недостаток, заключающийся в том, что он не может легко захватывать сообщения по приоритету, что я должен делать после завершения записи.
Я думал о Словаре, но, если я не ошибаюсь, у него нет простого способа сказать: «Если ключ __ существует, дайте мне значение, соответствующее ему, иначе дайте мне ноль». Или я что-то упустил?
EDIT
Моя текущая реализация должна иметь 32 фиксированных списка. Применимый список добавлен, а применимый бит установлен в 32-битном флаге. Я использую алгоритм де Брюина, чтобы получить младший бит. Это эффективно, но добавляет другую сложность, которую я хочу облегчить.