Скажем, у вас был этот класс DTO:
public class MyObj{
private int id;
private String displayName;
private String backendData;
public boolean equals(Object obj){
return id.equals(obj);
}
private int hashCode(){
return id.hashCode();
}
}
Допустим, пользователь должен выбрать несколько экземпляров MyObj из списка, который показывает только displayName и id #, связанный в фоновом режиме. Чтобы сохранить пропускную способность, вы не отправляете backendData. Когда они возвращают свой выбор вам, клиент просто отправляет вам идентификатор #.
Теперь вы сохранили список серверных сторон оригинальных опций в Коллекции . Наивным подходом к возвращению «полного» объекта из коллекции было бы перебрать коллекцию и вызвать «.equals ()» для каждого объекта. Это масштабируется в O (n), хотя: (
Кажется, что с помощью коллекций операций с постоянным временем, таких как HashSet, я должен иметь возможность извлекать объект за постоянное время, если я знаю, что он идентичен. Но в HashSet есть только метод "contains ()" и он не возвращает найденный объект.
Любой совет? Как всегда, спасибо огромное стеку OverFlow!