Создание хэш-карты с двойным ключом

Я ищу подходящую структуру данных для моей проблемы. Я хотел бы иметь возможность выбирать узловые объекты как можно более эффективно с помощью двух ключей. Вставка и удаление также должны быть эффективными.Практически каждый объект узла имеет пару ключей. Пары уникальны, а отдельные ключи - нет. Мне нужно иметь возможность выбрать группу узлов, у которых есть определенное значение для одного из двух ключей.

Пример:

Узел 1 имеет ключи a1 и b1

Узел 2 имеет ключи a1 и b2

Узел 3 имеет ключи a2 и b2

Я хотел бы, например, иметь возможность выбирать узел с помощью ключа a1, b1, но также и все узлы, у которых b2 указан как key2.

Я, конечно, мог бы сделать две HashMap (по одной для каждого ключа), но это некрасивое решение, потому что, когда я добавляю или удаляю что-то, мне приходилось делать это на обеих картах. Поскольку будет много добавлений и удалений, я бы предпочел сделать это за один раз. Есть ли у кого-нибудь идеи, как это сделать?

Очевидно, что наличие одного ключа, объединяющего два ключа вместе, не решает проблему, потому что мне также нужно иметь возможность искать один ключ без необходимости перебирать все карта. Это было бы не очень эффективно. Проблема в эффективности. Я мог бы просто искать в каждой записи на карте определенный ключ, но вместо этого я хотел бы использовать хэш, чтобы я мог сразу выбрать несколько узловых объектов, используя любой из двух ключей.

Я не ищу что-то вроде MultiKeyMap, потому что в этой структуре данных первый ключ всегда остается неизменным, вы можете только добавлять ключи вместо замены первого ключа другим ключом. Я хочу иметь возможность переключаться между первым и вторым ключом.

Я хочу и не хочу хранить несколько объектов с одним и тем же ключом.Если вы посмотрите на пример, то увидите, что два ключа вместе всегда уникальны. Это можно рассматривать как один ключ, поэтому я бы не стал хранить несколько объектов под одним ключом. Но если вы посмотрите на отдельные ключи, они не уникальны, поэтому я хочу хранить несколько объектов, на которые ссылаются отдельные ключи.

7
задан Danielle 21 December 2011 в 16:33
поделиться