此代码需要 9 分钟才能运行一组 5,600 个对象:
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) 对,这些对将被提供给这些方法。