Назад к вопросам
ОТП Банк
Junior — Middle
105
Каким образом можно избежать дублирования ссылочных данных при работе?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы избежать дублирования ссылочных данных в Java, можно использовать следующие подходы:
- Использование паттерна Flyweight — общий объект создаётся один раз и переиспользуется в разных местах, что экономит память.
- Кэширование объектов — хранить созданные объекты в коллекции (например, Map) и при необходимости возвращать уже существующий экземпляр.
- Immutable объекты — если объекты неизменяемы, их безопасно переиспользовать без риска изменения данных.
- Использование equals() и hashCode() для проверки эквивалентности — перед созданием нового объекта проверять, есть ли уже такой.
Пример с кэшированием строк (String Pool работает по похожему принципу):
import java.util.HashMap;
import java.util.Map;
public class ReferenceCache {
private Map<String, DataObject> cache = new HashMap<>();
public DataObject getDataObject(String key) {
if (!cache.containsKey(key)) {
cache.put(key, new DataObject(key));
}
return cache.get(key);
}
}
class DataObject {
private String data;
public DataObject(String data) {
this.data = data;
}
// геттеры, сеттеры и другие методы
}
Таким образом, при повторном запросе с тем же ключом возвращается один и тот же объект, что исключает дублирование.