Как избежать повторяющихся сравнений при сравнении элементов списка?

В моем приложении есть список путей к файлам, например

private string[] listOfFiles = {
    "A.txt", "B.txt", "C.txt", "D.txt"
};

и мне нужно сравнить каждый из этих файлов со всеми другими файлами в списке, поэтому простой способ будет выглядеть как

A.txt - B.txt
A.txt - C.txt
A.txt - D.txt
B.txt - A.txt
B.txt - C.txt
B.txt - D.txt

...и так далее.

Как видите, это не оптимально, поскольку в этом примере я дважды сравниваю A.txt и B.txt, тратя время и ресурсы.

Как мне избежать подобных повторяющихся сравнений? Я уверен, что есть простой способ, но я его не вижу и мой гугл-фу меня подводит.


person Peter W.    schedule 17.03.2017    source источник
comment
Вам нужно проверить содержимое или просто удалить повторяющиеся пути к файлам?   -  person StfBln    schedule 17.03.2017
comment
Я на самом деле сравниваю изображения, которые, учитывая количество изображений, которые я обрабатываю, могут занять много времени и даже дольше со всеми дубликатами. Мне просто нужно избавиться от дубликатов.   -  person Peter W.    schedule 18.03.2017


Ответы (1)


С помощью двойного цикла вы можете сравнить два имени файла только один раз, например:

for(int i = 0; i < arr.Length; i++){
    for(int j = i + 1; j < arr.Length; j++){
          // comparison
    }
}
person dcg    schedule 17.03.2017