У меня есть Java Set<MyClass>
, на котором я переопределил equals
и hashCode
, чтобы использовать переменную String name;
.Использование набора с одним классом, но найти с помощью String
public class MyClass{
final String name;
public boolean equals(Object o){...}
public int hashCode(){return name.hashCode();}
}
Есть в любом случае я могу получить объект из HashSet, используя что-то вроде
MyClass o = set.get("nameofmyobject");
Есть ли способ сделать это в Java, или структура данных? или мне нужно изменить все мои наборы на Карты?
В списке дается 'O (n)' доступ. Мог бы просто перебирать множество. – tom
Мне нравится ссылка на этот вопрос. Я этого не видел. Даже этот вопрос на самом деле не объясняет, почему :( –
Если вы посмотрите в наборе для объекта, у вас есть объект уже, иначе вы не смогли бы его найти. Думаю, почему бы не работать с объектом после проверки равенства ? –