将每个项目与 ArrayList 中的其他每个项目进行比较

2022-09-01 22:05:33

我遇到了一个我认为应该是一个非常简单的问题。

我需要将arrayList中的每个项目与列表中的所有其他项目进行比较,而无需将项目与它们自己进行比较。它不像调用 equals() 比较那么简单,它涉及一些自定义逻辑,我从下面的代码中省略了这些逻辑。此外,数组列表不应以任何方式更改。

我似乎遇到的问题是,一旦我进入第二个循环,我不知道我是否有另一个对象可以比较(因为它是一个可变大小的列表)。

for(int i =0; i< list.size(); i++){ 
    //get first object to compare to
    String a = list.get(i).getA();

    Iterator itr = list.listIterator(i + 1 ); // I don't know if i + 1 is valid
    while(itr.hasNext()){
        // compare A to all remaining items on list
    }
}

我想我可能以错误的方式这样做,我对如何更好地做到这一点的建议或提示持开放态度。


答案 1
for (int i = 0; i < list.size(); i++) {
  for (int j = i+1; j < list.size(); j++) {
    // compare list.get(i) and list.get(j)
  }
}

答案 2

在内部使用循环有什么问题,就像在外面一样?for

for (int j = i + 1; j < list.size(); ++j) {
    ...
}

一般来说,从Java 5开始,我只使用一两次迭代器。