Я хочу сравнить два списка в java и построить два списка: один найденный, а другой - не найденный.
Вот мой код, пожалуйста, посоветуйте, пожалуйста, лучшие результаты и эффективный способ сделать это.
Итак, я получаю список писем для добавления или обновления.Теперь я пытаюсь добиться того, чтобы я сравнивал эти письма с теми, что в БД.если они существуют в БД, просто обновите их, в противном случае добавьте их.
Для этого я получаю список электронных писем из БД, а затем пытаюсь сравнить этот список со списком электронных писем, которые должны быть добавлены или обновлены.
Затем я строю 2 списка: один найден, а другой не найден.Найденные обновляются, а не найденные - это те, которые будут вставлены в БД.
Следующие сборки кода не найдены со списками, которые уже находятся в БД, что приводит к вставке БД (вызывает дублирование записей).
Так что, если я правильно построю найденный и не найденный, тогда обновление и вставка будут работать правильно.
public updateData (List<String> emailToAddList, List<String> emailToDeleteList)
{
List<String> emailsFromDB = Service.getEmailsFromDB();
List<String> emailToUpdateFound = new ArrayList<String>( );
List<String> emailToUpdateNotFound = new ArrayList<String>();
/**
** compare emailToAddList with emailsFromDB, if found populate
** emailToUpdateFound for data update, otherwise populate emailToUpdateNotFound for data insetion
**/
Collections.sort(emailListToAdd);
Collections.sort(emailListfromDB);
if(emailListToAdd.size() > emailListfromDB.size()
{
for(String addStr: emailListToAdd)
{
if(emailListfromDB.contains(addStr))
{
emailToUpdateFound.add(addStr);
}
else
{
emailToUpdateNotFound.add(addStr);
}
}
}
else
{
for(String str: emailListfromDB)
{
if(emailListToAdd.contains(str))
{
emailToUpdateFound.add(str);
}
else
{
emailToUpdateNotFound.add(str);
}
}
}
}
Спасибо