このコードは、5,600 個のオブジェクトのセットに対して実行に 9 分かかります。
public Set<UnDirectedPair<T>> getAllUndirectedPairs(Set<T> setObjects) {
Set<T> setObjectsProcessed = new TreeSet();
Set<UnDirectedPair<T>> setPairs;
setPairs = new TreeSet();
Iterator<T> setObjectsIteratorA = setObjects.iterator();
Iterator<T> setObjectsIteratorB;
T currTA;
T currTB;
while (setObjectsIteratorA.hasNext()) {
currTA = setObjectsIteratorA.next();
setObjectsProcessed.add(currTA);
setObjectsIteratorB = setObjects.iterator();
while (setObjectsIteratorB.hasNext()) {
currTB = setObjectsIteratorB.next();
if (!setObjectsProcessed.contains(currTB) && !currTA.equals(currTB)) {
setPairs.add(new UnDirectedPair(currTA, currTB));
}
}
setObjectsProcessed.add(currTA);
}
return setPairs;
}
実行時間を劇的に短縮する方法をお探しですか...アイデアですか?
[背景] セットには人物が含まれています。セット内に重複があります (同一人物ですが、入力時のエラーにより属性がわずかに異なります)。私は 2 人を取り、必要な修正を行うメソッドを持っています。したがって、準備段階として、これらのメソッドに供給される (Person, Person) のペアのセットを作成する必要があります。