Шаблон проектирования, который вы ищете: Дифференциальное исполнение. Я верю.
Как работает дифференциальное выполнение?
Это вопрос, на который я ответил, который касается этого.
Однако могу ли я предложить вам использовать обратный вызов? Вам придется прочитать об этом, но общая идея заключается в том, что вы можете реализовать интерфейсы (часто называемые слушателями), которые активируются при «чем-то интересном». Например, наличие структуры данных для изменения.
Обязательные ссылки:
Wiki Дифференциальное исполнение
Wiki Callback
Хорошо, вот ответ, который я вижу. Дифференциальное выполнение - O (N) время. Это действительно разумно, но если это не сработает для вас, обратные вызовы будут. Обратные вызовы в основном работают путем передачи метода по параметру вашему классу, который изменяет массив. Этот метод примет измененное значение и местоположение элемента, передаст его по параметру в «класс хранения» и соответствующим образом изменит значение. Так что да, вы должны подкреплять каждое изменение вызовом метода.
Теперь я понимаю, что это не то, что вы хотите. Похоже, что вы хотите, чтобы вы могли предоставить какой-либо слушатель для каждой переменной в массиве, который будет вызываться при изменении этого элемента. Затем слушатель изменит соответствующий массив в вашей «резервной копии», чтобы отразить это изменение.
По сути, я не могу придумать, как это сделать. Конечно, вы можете создавать своих собственных слушателей и события, используя интерфейс. По сути, это та же идея, что и для обратных вызовов, хотя на нее и приятно смотреть.
Тогда есть отражение ... У Java есть отражение, и я уверен, что вы можете написать что-нибудь, используя это для этого. Тем не менее, размышление, как известно, медленно. Не говоря уже о боли в коде (на мой взгляд).
Надеюсь, это поможет ...