Я ищу подходящую структуру данных для моей проблемы. Я хотел бы иметь возможность выбирать объекты узлов максимально эффективно, используя два ключа. Вставка и удаление также должны быть эффективными. В основном каждый объект узла имеет пару из двух ключей. Пары уникальны, а отдельные ключи - нет. Мне нужно иметь возможность выбрать группу узлов, которые имеют определенное значение для одного из двух ключей.
Пример:
Узел1 имеет ключи a1 и b1
Узел2 имеет ключи a1 и b2
Узел 3 имеет ключи a2 и b2
Я хотел бы, например, иметь возможность выбрать узел с ключом a1, b1, но также и все узлы, которые имеют b2 в качестве ключа 2.
Конечно, я мог бы создать два HashMaps (по одному для каждого ключа), но это своего рода уродливое решение, потому что, когда я добавлял или удалял что-то, мне приходилось делать это на обеих картах. Поскольку будет много добавлений и удалений, я бы предпочел сделать это за один раз. У кого-нибудь есть идеи как это сделать?
Очевидно, что наличие одного ключа, который объединяет два ключа, не решает проблему, потому что мне также нужно иметь возможность искать один ключ без необходимости поиска по всей карте. Это было бы не очень эффективно. Проблема в эффективности. Я мог бы просто найти в каждой записи на карте определенный ключ, но вместо этого я хотел бы использовать хеш, чтобы я мог выбрать несколько узловых объектов, используя один из двух ключей мгновенно.
Я не ищу что-то вроде MultiKeyMap, потому что в этой структуре данных первый ключ всегда остается неизменным, вы можете только добавлять ключи вместо замены первого ключа другим ключом. Я хочу иметь возможность переключаться между первым и вторым ключом.
Я не хочу хранить несколько объектов с одним и тем же ключом. Если вы посмотрите на пример, вы увидите, что две клавиши вместе всегда уникальны. Это можно рассматривать как один ключ, поэтому я не буду хранить несколько объектов под одним ключом. Но если вы посмотрите на отдельные ключи, они не уникальны, поэтому я хочу сохранить несколько объектов, на которые ссылаются отдельные ключи.