Sobes.tech
Junior — Middle
148

Cum se poate evita duplicarea datelor de referință în timpul muncii?

Companiile au fost întrebate
ОТП БанкОТП Банк

Răspuns de la AI

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;
    }
    // геттеры, сеттеры и другие методы
}

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