У меня есть TreeSet, где элементами являются объекты с двумя атрибутами (имя и возраст). Каждый раз, когда я хочу искать объект с определенным именем, мне приходится прибегать к расширенному циклу или итератору.Невозможно использовать метод contains() метода TreeSet
Невозможно использовать метод для поиска объекта с определенным именем, так как имя «инкапсулировано» внутри этого объекта.
Есть ли способ преодолеть эту проблему? То есть, способ воспользоваться временной сложностью ?
Поскольку все элементы в TreeSet сортируются по имени, должен быть способ, который я думаю.
Пример того, что я хочу добиться:
public Element search(String name) {
// if some TreeSet element's name.equals(name), return the Element
}
пример того, что я не хотите использовать:
public Element search(String name) {
for (Element entry : tree) {
if (entry.getName().equals(name)) {
return entry;
}
}
return null;
}
Почему это набор вместо карты от имен до whatevers? – user2357112
@ user2357112: Потому что это назначение, и мне не разрешено изменять коллекцию. –
Тогда задание, вероятно, либо ожидает, что вы будете использовать поиск O (n), либо ожидаете, что вам не удастся выполнить эти операции поиска. Также существует вероятность того, что вы должны создавать и поддерживать вспомогательную карту, или что назначение несовместимо, или что вы что-то неправильно поняли. – user2357112