У меня есть список User
s, каждый со списком их Group
s. Что-то вроде этого:Добавить элементы в ArrayList, которые находятся внутри LinkedHashMap [Android]
John -->[GroupA]
Peter --> [GroupB, GroupC]
Bob --> [GroupC]
Tom --> [GroupA,GroupB]
Jack --> []
Тогда у меня есть свой собственный список групп:
Me -->[GroupA, GroupB, GroupC].
Так что я хочу, чтобы поместить пользователей в «ведро», который соответствует их группам с моим. Если у пользователя нет групп, они будут добавлены в группу Generic в списке. Таким образом, результат должен быть что-то вроде:
Контакты:
{ GroupA:[John, Tom], GroupB:[Peter, Tom], GroupC:[Peter, Bob], Generic:[Jack]}
Так что я проверить что-то вроде этого, но он генерирует дублированные значения на LinkedHashMap, и я не знаю, как ее решить.
private void createVoidCollection() {
groupsCollections = new LinkedHashMap<String, List<RosterEntry>>();
ArrayList<RosterEntry> contacts = new ArrayList<RosterEntry>();
for (String group : groupList) {
groupsCollections.put(group, contacts);
}
}
private void createContactListCollection() {
createVoidCollection();
boolean bAdded = false;
//Returns a Collection of USers/contacts
Collection<RosterEntry> contacts = mRoster.getEntries();
for (RosterEntry buddy : contacts) {
//We get the groups that pertains every contact/user
Collection<RosterGroup> buddyGroups = buddy.getGroups();
List<RosterEntry> contactsAux = new ArrayList<RosterEntry>();
for (RosterGroup group : buddyGroups) {
//For all the groups of the user, we check if is in some of my groups. If not they will be added to a generic group.
if (groupList.contains(group.getName())) {
contactsAux = groupsCollections.get(group.getName());
contactsAux.add(buddy);
groupsCollections.put(group.getName(), contactsAux);
bAdded = true;
}
}
if (!bAdded) {
//The generic group is checked if exist or not, to be created if neeeded.
if (groupsCollections.containsKey(mBuddGroup)) {
contactsAux = groupsCollections.get(mBuddGroup);
contactsAux.add(buddy);
groupsCollections.put(mBuddGroup, contactsAux);
} else {
contactsAux.add(buddy);
groupsCollections.put(mBuddGroup, contactsAux);
groupList.add(mBuddGroup);
}
}
bAdded = false;
}
}
Вопрос:
Как я могу решить эту проблему? Есть ли способ сделать это лучше? Список
Мои группы:
DEV-andorraCASS2007
D40-E30-Kosmos
Контакты и список группы каждого из них:
User:
pruebaopenfire
Groups:
D40-E30-Kosmos
User:
Diana P
Groups:
DEV-andorraCASS2007
D40-E30-Kosmos
User:
Fabio C
Groups:
D40-E30-Kosmos
User:
Alejandro
Groups:
DEV-andorraCASS2007
User:
Jordi C
Groups:
DEV-andorraCASS2007
D40-E30-Kosmos
User:
Mikel S
Groups:
D40-E30-Kosmos
User:
AAAAA
Groups:
User:
Rubén R
Groups:
DEV-andorraCASS2007
D40-E30-Kosmos
User:
Diego M
Groups:
D40-E30-Kosmos
User:
jfkgl
Groups:
User:
Luis T
Groups:
DEV-andorraCASS2007
D40-E30-Kosmos
User:
Melissa Y
Groups:
D40-E30-Kosmos
User:
Prova Prova
Groups:
D40-E30-Kosmos
Результат:
02-16 13:22:13.436: D/TESTINGGROUPS(6056):
{
DEV-andorraCASS2007=[Diana P: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Diana P: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Alejandro Q: [email protected] [DEV-andorraCASS2007], Mikel S: [email protected] [D40-E30-Kosmos], Rubén R: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Rubén R: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Diego M: [email protected] [D40-E30-Kosmos], Jordi C: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Jordi C: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Luis T: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Luis T: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Prova Prova: [email protected] [D40-E30-Kosmos], pruebaopenfire: [email protected] [D40-E30-Kosmos], Melissa Y: [email protected] [D40-E30-Kosmos], Fabio C: [email protected] [D40-E30-Kosmos]],
D40-E30-Kosmos=[Diana P: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Diana P: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Alejandro Quintana: [email protected] [DEV-andorraCASS2007], Mikel Sobradillo Ecenarro: [email protected] [D40-E30-Kosmos], Rubén R: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Rubén R: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Diego M: [email protected] [D40-E30-Kosmos], Jordi C: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Jordi C: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Luis T: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Luis T: [email protected] [DEV-andorraCASS2007, D40-E30-Kosmos], Prova Prova: [email protected] [D40-E30-Kosmos], pruebaopenfire: [email protected] [D40-E30-Kosmos], Melissa Y: [email protected] [D40-E30-Kosmos], Fabio C: [email protected] [D40-E30-Kosmos]],
Otros Contactos=[jfkgl: jhgfk, AAAAA: [email protected]]
}
пожалуйста, покажите результат, что получить в 'LinkedHashMap' с текущей логикой –
я добавил, что вам нужно. – Shudy
уже есть ответ попробовать –