繁体   English   中英

比较java中两个arrayList的元素

[英]comparing elements of two arrayList in java

我有两个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,因为如果条件不能进入,任何人都可以帮助我

只迭代第一个具有较大长度的arraylist并检查第二个arraylist中的contains ,如果找到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<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);
        }
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM