Прежде всего, вы не дублируете сообщение, добавляя его в разные коллекции одновременно - вы сохраняете только отдельные ссылки на один и тот же объект.(Хорошо, если сообщение не представлено в виде примитивного типа, например long
... но его все равно нельзя добавить в коллекции.)
Почему вы не можете иметь все эти коллекции в одном и том же UserProfile??Это позволит вам получать доступ к сообщениям по ключу или индексу и выполнять их итерацию любым удобным для вас способом.
A LinkedHashMap также может быть интересным вариантом для вас, поскольку он гарантирует порядок итераций,таким образом, он ведет себя подобно списку в отношении итерации, оставаясь при этом картой.В конечном итоге все сводится к тому, как вы хотите получить доступ к сообщениям данного пользователя, которые вы не детализировали.
Обновление: @Snake, вы можете хранить только ссылки на объекты вКоллекции Java.Таким образом, примитивное значение long
не может быть сохранено напрямую, только путем преобразования сначала в объект Long
.Обратите внимание, что начиная с Java5, это преобразование может быть неявным из-за автобокса, поэтому вы не видите его в коде, но, тем не менее, это происходит - например,
List<Long> list = new ArrayList<Long>();
list.add(1L); // the primitive value is boxed into a Long object,
// which is then added to the list
long value = list.get(0); // the value of the Long object in the list is outboxed
// and assigned to the primitive variable