我的头衔不好,但我不知道应该是什么。我的问题很简单,我有四个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。我该怎么办?
答案 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);
}
}
}
希望有所帮助。