我有一个很大的字符串列表。我有一个小的字符串列表,实际上是一个大字符串列表的子集。现在我需要将匹配的项目分成源列表和不匹配的项目到目标列表中。
我可以分开匹配的项目,但无法创建正确的非匹配项目列表。
以下是我写的java代码:
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 =============
[hyderabad, mumbai, delhi, hyderabad, mumbai, delhi, jammu, patna, kanpur]
========== Target List =============
[jammu, surat, hyderabad]
想要的是:
========== Source List =============
[mumbai, delhi, patna, kanpur, bangalore, chennai, kota]
========== Target List =============
[jammu, surat, hyderabad]
非常感谢任何帮助。
更新:我无法使用removeAll创建源列表。浏览每条记录对于分离内容是强制性的。
答案 0 :(得分:0)
首先将整个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;
}
}
}