У меня есть набор парных данных ключ / значение в форме HashMap, которыми я должен манипулировать.
Вот подпись объекта, на который я смотрю:
Map<Consumer, ArrayList<EventMsg>> consumerMsgListMap =
new HashMap<Consumer, ArrayList<EventMsg>>();
Результат System.out.println (consumerMsgListMap.toString ()) следующий:
ConsumerA = [msg1, msg3], ConsumerB = [msg1, msg2, msg4], ConsumerC= [msg2, msg3]
Как видите, каждое значение () является списком, а не отдельным значением.
Мне нужно найти способ переупорядочить данные, напримерчто для каждой уникальной EventMsg записи существует связанный потребитель.Например:
msg1 должен быть связан с [ConsumerA, ConsumerB]
msg2 должен быть связан с [ConsumerB, ConsumerC]
msg3 должен бытьсвязанный с [ConsumerA, ConsumerC]
msg4 должен быть связан с [ConsumerB]
Это не вопрос простого обращения пар K, V.
Я думаю, что правильный подход заключается в том, чтобы получить уникальность среди всех значений путем создания отдельного HashSet, но я не могу найти способ получить значения как отдельные объекты
(например, msg1, msg3, msg1, msg2, msg4)
, а не как группы объектов
(например, [msg1, msg3], [msg1, msg2, msg4]).
Это, вероятно, очевидно для опытного профессионала, но на моей стадии развития я в тупике.Надеюсь, я четко сформулировал проблему.Заранее спасибо, если у кого-нибудь есть идеи.
Вот начальная настройка.Потребителем также может быть String, а EventMsg также может быть Integer:
Map<Consumer, ArrayList<EventMsg>> consumerMsgListMap = new HashMap<Consumer, ArrayList<EventMsg>>();
Consumer c1 = new Consumer("ConsumerA");
Consumer c2 = new Consumer("ConsumerB");
Consumer c3 = new Consumer("ConsumerC");
ArrayList<EventMsg> msgListA = new ArrayList<EventMsg>();
msgListA.add(new EventMsg("msg1"));
msgListA.add(new EventMsg("msg3"));
ArrayList<EventMsg> msgListB = new ArrayList<EventMsg>();
msgListB.add(new EventMsg("msg1"));
msgListB.add(new EventMsg("msg2"));
msgListB.add(new EventMsg("msg4"));
ArrayList<EventMsg> msgListC = new ArrayList<EventMsg>();
msgListC.add(new EventMsg("msg2"));
msgListC.add(new EventMsg("msg3"));
consumerMsgListMap.put(c1, msgListA);
consumerMsgListMap.put(c2, msgListB);
consumerMsgListMap.put(c3, msgListC);