ArrayList Java上的重复

时间:2014-08-22 21:32:23

标签: java arraylist

我的头衔不好,但我不知道应该是什么。我的问题很简单,我有四个arraylist,我想从其中两个得到类似的话,并把另一个arraylists。无论如何,我的数组列出了像;

arrList1 = {car, apple, many, car, tyty, man, superman};
arrList2 = {stack, vs, etc, vs, car, tyty, stack,  tyty, many, car, apple};

我试过这个;

for (int i = 0; i < arrList1.size(); i++) {
        for (int j = 0; j < arrList2.size(); j++) {

            if (arrList1.get(i).equals(arrList2.get(j))) {
              arrList3.add(arrList1.get(i);
              arrList4.add(arrList2.get(j);
         }
      }

但正如您所看到的,arrList1和arrList2具有重复项,因此arrList4将具有比正常情况更多的相同元素。另外,我必须计算arrList1和arrList2中的元素,所以我不应该使用Set Collections。我该怎么办?

3 个答案:

答案 0 :(得分:1)

尝试

ArrayList<String> temp = new ArrayList<String>();
boolean found = false;
for (int i = 0; i < arrList1.size(); i++) {
    found = false;
    for (int j = 0; j < arrList2.size(); j++) {
        if (arrList1.get(i).equals(arrList2.get(j))) {
            found = true;
            if (!temp.contains(arrList2.get(j)) {
                arrList4.add(arrList2.get(j));
            }
        }
    }
    if (found) {
        arrList3.add(arrList1.get(i));
        temp.add(arrList1.get(i));
    }
}

这将检查新ArrayList是否尚未包含该项目。

答案 1 :(得分:0)

试试这个

    ArrayList tempList=new ArrayList(arrList1);
    tempList.removeAll(arrList2);
    arrList4 = new ArrayList(arrList1);       
    arrList4.removeAll(tempList);

答案 2 :(得分:0)

你应该使用另一种类型的列表,但你也可以像这样使用arraylist:

for (int i = 0; i < arrList1.size(); i++) {
    for (int j = 0; j < arrList2.size(); j++) {

        if (arrList1.get(i).equals(arrList2.get(j))) {
          if(!(arrList3.contains(arrList1.get(i))) {
          arrList3.add(arrList1.get(i);
          }

          if(!(arrList4.contains(arrList2.get(j))) {
          arrList4.add(arrList2.get(j);
        }
     }
  }
希望有所帮助。