比较java中两个arrayList的元素

我有两个String类型arraylist ..one列表包含“book1”,“book2”,“book3”和“book4”。 另一个arrayList包含“book1”,“book2”,“book3”。 所以,第一个列表的大小是4,第二个是3.我创建了另一个arrayList,等于第一个列表的大小

List comparingList = new ArrayList(); //adding default values as one for(int a=0;a<firstList.size();a++){ comparingList.add(0); } 

如果两个列表之间的任何内容相等,我设置为1而不是0。

所以新的arrayList(comparisonList)应该有1,1,1,0个元素

 for(int counter = 0;counter < firstList.size();counter++){ for(int counter1 = 0;counter1 < secondList.size();counter1++){ if(firstList.get(counter).equals(secondList.get(counter1))){ comparingList.set(counter,1); break; } } } 

但是当我这样做的时候,我无法设置1,因为如果条件不能进入,任何人都可以帮助我

只迭代第一个具有较大长度的arraylist并检查包含在第二个arraylist中,如果找到set,则其他人什么都不做

 for(int counter = 0; counter < firstList.size(); counter++) { if(secondList.contains(firstList.get(counter))) { comparingList.set(counter,1); } } 

整个java程序

只需尝试在http://www.compileonline.com/compile_java_online.php中运行以下程序

 import java.util.ArrayList; import java.util.List; public class CompareArrayListTest{ public static void main(String[] args) { ArrayList firstList = new ArrayList(); firstList.add("book1"); firstList.add("book2"); firstList.add("book3"); firstList.add("book4"); ArrayList secondList = new ArrayList(); secondList.add("book1"); secondList.add("book2"); secondList.add("book3"); List comparingList = new ArrayList(); // adding default values as one for (int a = 0; a < firstList.size(); a++) { comparingList.add(0); } for (int counter = 0; counter < firstList.size(); counter++) { if (secondList.contains(firstList.get(counter))) { comparingList.set(counter, 1); } } System.out.println(comparingList); } 

 BitSet bitset = new BitSet(); // adding default values as one for (int a = 0; a < firstList.size(); a++) { comparingList.add(0); } for (int counter = 0; counter < firstList.size(); counter++) { for (int counter2 = 0; counter < secondList.size(); counter++) { if (secondList.get(counter2).equals(firstList.get(counter))) { bitset.set(counter, 1); } } } 

您可以将列表转换为集合,然后使用Set.retainAll方法在不同集合之间进行交集。 一旦与所有集相交,就会留下公共元素,并且可以将结果集转换回列表。