Я создаю свою собственную очередь приоритетов. Это не типичная очередь с приоритетами, в которой элементы вставляются с заданным приоритетом. Скорее элементы могут быть добавлены в очередь, и они начинаются с наивысшим приоритетом (скажем, у нас есть 5 очередей, очередь 1 = наивысший приоритет, очередь 5 = наименьший)), поэтому элемент добавляется в очередь 1 изначально.
Пользователь этой структуры данных может получить элемент next (), который возвращает элемент, основанный на некоторых интересующих меня факторах, а именно приоритет, но он не исключается из всей структуры данных. Пользователь предоставляет некоторую обратную связь о достоверности элемента, возвращенного из предыдущего вызова функции next () (например, результат «пройдено / не выполнено»), и на основании этого элемент перемещается вверх или вниз по приоритету. В основном, элементы, которые терпят неудачу, используются реже, и у меня есть механизмы для удаления элементов, которые выходят из строя слишком часто.
1) Есть предложения по улучшению интерфейса? Мне не нравится извлекать элемент из вызова next (), а затем предоставлять обратную связь с другим вызовом функции. Существует слишком много места для ошибки, когда состояние испортилось. (т.е. пользователь не сообщает результат до получения следующего элемента ... и т. д.). Кроме того, было бы желательно, чтобы это было потокобезопасным.
2) Я использую закрытый вложенный класс, который обертывает интересующие меня элементы, а также некоторые атрибуты, связанные с каждым элементом, для отслеживания статистики по элементу (например, счетчик проходов / неудач и т. Д.) И хотел бы знаете, есть ли способ получить доступ к внешним членам класса из внутреннего класса?