Скажем, у меня этот тип в моем приложении:
public class A {
public int id;
public B b;
public boolean equals(Object another) { return this.id == ((A)another).id; }
public int hashCode() { return 31 * id; //nice prime number }
}
и a Set
. Теперь у меня есть объект типа <A
> A
и хочу сделать следующее:
- Если мой
A
находится внутри набора, обновите его полеb
для соответствия моему объекту. - Еще, добавьте его в набор.
Таким образом, проверка того, находится ли там, достаточно проста (contains
), и добавление в набор тоже легко. Мой вопрос таков: как мне получить дескриптор для обновления объекта внутри? Интерфейс Set
не имеет метода get
, и лучше всего я мог подумать об удалении объекта в наборе и добавлении моего. другой, еще хуже, альтернативой является перемещение набора с помощью итератора, чтобы попытаться найти объект.
Я с радостью буду принимать лучшие предложения... Это включает эффективное использование других структур данных.
Yuval = 8 -)
РЕДАКТИРОВАТЬ: Спасибо всем за ответы... К сожалению, я не могу "принять" лучшие ответы здесь, те, которые предлагают использовать Map
, потому что изменение типа коллекции радикально для этой цели было бы немного экстремально (эта коллекция уже отображается через Hibernate...)