我有两个String类型arraylist ..one列表包含“book1”,“book2”,“book3”和“book4”。另一个arrayList包含“book1”,“book2”,“book3”。所以,第一个列表的大小是4,第二个是3.我创建了另一个arrayList,等于第一个列表的大小
List<Integer> comparingList = new ArrayList<Integer>();
//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,因为如果条件不能进入,请任何人帮助我
答案 0 :(得分:6)
只对第一个长度较大的arraylist进行迭代,并在第二个arraylist中检查 contains ,如果找到则设置其他人什么都不做
for(int counter = 0; counter < firstList.size(); counter++) {
if(secondList.contains(firstList.get(counter))) {
comparingList.set(counter,1);
}
}
尝试在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<String> firstList = new ArrayList<String>();
firstList.add("book1");
firstList.add("book2");
firstList.add("book3");
firstList.add("book4");
ArrayList<String> secondList = new ArrayList<String>();
secondList.add("book1");
secondList.add("book2");
secondList.add("book3");
List<Integer> comparingList = new ArrayList<Integer>();
// 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);
}
}
}
答案 1 :(得分:2)
您可以将列表转换为集合,然后使用Set.retainAll方法在不同集合之间进行交集。一旦你与所有集相交,你就会得到公共元素,你可以将结果集转换回列表。