Sobes.tech
Назад к вопросам
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;
    }
    // геттеры, сеттеры и другие методы
}

Таким образом, при повторном запросе с тем же ключом возвращается один и тот же объект, что исключает дублирование.