Это довольно открытый вопрос. Я сделаю снимок.
Я думаю, вам нужно помнить три различных понятия:
Интерфейс
Реализация
Клиент
Давайте посмотрим на каждого.
У вас уже есть интерфейс, так что с этой стороны все хорошо.
То, что вы называете клиентом, я полагаю, является реализацией, то есть это фактический код, который реализует поведение методов, определенных в вашем интерфейсе.
Клиент (в моей интерпретации) будет еще одной частью вашей системы, которая взаимодействует с вашим интерфейсом через реализацию, которую вы напишите.
Решение вашего вопроса:
Первым шагом было бы выяснить, как вы сохраните данные, введенные через put и putAll. Если вы просто хотите сохранить некоторые данные в памяти, то, вероятно, карты будет достаточно. Если ожидается, что количество записей значительно возрастет, возможно, вы захотите заставить реализацию взаимодействовать с базой данных (или другой формой постоянства).
Добавляет ли это немного света на ваш вопрос? Добавьте еще несколько деталей, и я дам больше информации, если смогу.
Надеюсь, это поможет.
Edit:
В распределенной системе хранения имеется довольно много переменных, занесенных в таблицу.
У вас есть централизованная конечная точка, которая затем выбирает, где данные будут храниться каким-либо образом (циклический перебор или какой-нибудь более сложный алгоритм)?
Как клиенты будут взаимодействовать с вашей системой? Это веб-система, RMI, что-то еще?
Я думаю, что вам нужно сосредоточиться на базовой архитектуре, прежде чем думать о фактической реализации, поскольку основные проблемы в такой системе - это надежность и обработка недостатков.
Одной из возможностей является наличие «сервера имен», который знает, где хранятся данные (в основном он имеет отображение ключей на «серверах хранения»), и нескольких других серверов, где данные фактически сохраняются. Вам нужно выбрать, как они будут взаимодействовать между ними, или если каждый сервер будет одновременно и «сервером имен», и «сервером хранения» ... здесь действительно много возможностей!