Я ищу эффективную индексированную постоянную структуру данных. Обычно я работаю в .NET и знаю о карте FSharp, однако эта реализация и большинство других, о которых я знаю, предоставляют только один «индекс», левая сторона отображения.
В основном вот сценарий
public class MyObject
public int Id { get; }
public int GroupId { get; }
public string Name { get; }
Где Id объекта будет глобально уникальным набором добавленных элементов. У GroupId могут быть повторяющиеся значения, и я хочу иметь возможность запрашивать все значения с совпадающим GroupId, и в пределах GroupId имена будут уникальными, но могут дублироваться для разных GroupId. Это не та ситуация, когда я могу просто создать составной ключ из 3 полей, так как мне нужен независимый доступ к группам элементов на основе определенных значений полей.
Я могу сделать это, и раньше использовал словари словарей, что было рекомендовано в других статьях здесь, в STackoverflow ... однако я также хочу, чтобы структура данных была
1) Полностью настойчивый и все, что значит
2) эффективен в памяти - это означает, что версии должны совместно использовать как можно больше узлов
3) эффективный в модификации - я хотел бы, чтобы это было быстро
Я понимаю, что здесь я прошу совсем немного, но я хотел попросить не пытаться заново изобретать колесо, если это уже было сделано.
Спасибо