Java 从两个列表中分离相似的元素,并将剩余的元素放入另一个列表中
我有一大堆字符串。我有一个小字符串列表,它实际上是大字符串列表的子集。现在,我需要将匹配项分离到源列表中,将不匹配项分离到目标列表中 我可以分离匹配项,但无法创建不匹配项的正确列表 下面是我编写的java代码:Java 从两个列表中分离相似的元素,并将剩余的元素放入另一个列表中,java,arrays,list,arraylist,Java,Arrays,List,Arraylist,我有一大堆字符串。我有一个小字符串列表,它实际上是大字符串列表的子集。现在,我需要将匹配项分离到源列表中,将不匹配项分离到目标列表中 我可以分离匹配项,但无法创建不匹配项的正确列表 下面是我编写的java代码: public class Demo { public static void main(String[] args) { List<String> smallList = new ArrayList<String>(); List<Stri
public class Demo {
public static void main(String[] args) {
List<String> smallList = new ArrayList<String>();
List<String> bigList = new ArrayList<String>();
List<String> sourceList = new ArrayList<String>();
List<String> targetList = new ArrayList<String>();
smallList.add("jammu");
smallList.add("surat");
smallList.add("hyderabad");
bigList.add("hyderabad");
bigList.add("mumbai");
bigList.add("delhi");
bigList.add("jammu");
bigList.add("patna");
bigList.add("kanpur");
bigList.add("surat");
bigList.add("bangalore");
bigList.add("chennai");
bigList.add("kota");
for(int i=0; i<smallList.size();i++)
{
for(int j=0; j<bigList.size(); j++)
{
if(smallList.get(i).equalsIgnoreCase(bigList.get(j)))
{
targetList.add(smallList.get(i));
break;
}
else{
targetList.add(bigList.get(j));
}
}
}
System.out.println("========== Source List =============");
System.out.println(sourceList);
System.out.println("========== Target List =============");
System.out.println(targetList);
}
}
我们需要的是:
========== Source List =============
[mumbai, delhi, patna, kanpur, bangalore, chennai, kota]
========== Target List =============
[jammu, surat, hyderabad]
非常感谢您的帮助
更新:我无法使用removeAll创建源列表。必须浏览每条记录才能分离内容。首先将整个
bigList
复制到sourceList
中。然后在匹配项上,将其添加到targetList
并从sourceList
for(int i=0; i<smallList.size();i++)
{
for(int j=0; j<bigList.size(); j++)
{
if(smallList.get(i).equalsIgnoreCase(bigList.get(j)))
{
targetList.add(smallList.get(i));
sourceList.remove(smallList.get(i));
break;
}
}
}
for(int i=0;i
for(int i=0; i<smallList.size();i++)
{
for(int j=0; j<bigList.size(); j++)
{
if(smallList.get(i).equalsIgnoreCase(bigList.get(j)))
{
targetList.add(smallList.get(i));
sourceList.remove(smallList.get(i));
break;
}
}
}