gpt4 book ai didi

Java 比较两个列表并创建两个列表,一个找到,另一个未找到

转载 作者:行者123 更新时间:2023-12-02 11:21:09 28 4
gpt4 key购买 nike

我想在java中比较两个列表并构建两个列表一个Found和另一个NotFound。

这是到目前为止我的代码,请您提供最佳结果和有效方法的建议。

所以基本上我收到了要添加或更新的电子邮件列表。现在我想要实现的是我想将这些电子邮件与数据库中的电子邮件进行检查。如果它们存在于数据库中,则只需更新它们,否则添加它们。

为此,我从数据库获取电子邮件列表,然后尝试将该列表与要添加或更新的电子邮件列表进行比较。

然后我构建 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);
}

}
}
}

谢谢

最佳答案

我想你会喜欢org.apache.commons.collections.CollectionUtils.subtract(a,b)方法。这以简单的方式满足您的要求。

这是我的示例代码:

public static void main(String[] args) {
List<String> input = new ArrayList<String>();
input.add("a");
input.add("b");
input.add("c");
input.add("d");

List<String> existing = new ArrayList<String>();
existing .add("d");
existing .add("b");
existing .add("z");

Collection<String> newStuff = CollectionUtils.subtract(input, existing);
Collection<String> updateStuff = CollectionUtils.subtract(input,newStuff);

System.out.println(newStuff);
System.out.println(updateStuff);
}

关于Java 比较两个列表并创建两个列表,一个找到,另一个未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6838715/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com