В настоящее время я пишу программу, которая должна сравнивать каждый файл в ArrayList переменного размера. Прямо сейчас я делаю это через цикл вложенного кода:
if(tempList.size()>1){
for(int i=0;i<=tempList.size()-1;i++)
//Nested loops. I should feel dirty?
for(int j=i+1;j<=tempList.size()-1;j++){
//*Gets sorted.
System.out.println(checkBytes(tempList.get(i), tempList.get(j)));
}
}
Я прочитал несколько разных мнений о необходимости вложенных циклов, и мне было интересно, есть ли у кого-нибудь более эффективная альтернатива.
На первый взгляд, каждое сравнение должно быть выполнено в любом случае, поэтому производительность должна быть достаточно стабильной, но я в некоторой степени убежден, что есть более чистый способ сделать это. Есть указатели?
EDIT :: Это только часть функции, для ясности. Файлы были сравнены и помещены в сегменты на основе длины - после просмотра карты набора и нахождения блока, длина которого превышает один, выполняется это. Итак, это все файлы одинакового размера. Я буду делать сравнение контрольной суммы, прежде чем доберусь до байтов, но сейчас я просто пытаюсь очистить цикл.
Кроме того, святая корова, этот сайт быстро реагирует. Спасибо, ребята.
EDIT2 :: Извините, для дальнейшего разъяснения: Я считаю, что часть обработки файла у меня достаточно приличная - сначала я сравниваю и сортирую по длине, затем по контрольной сумме, затем по байтам - проблема у меня заключается в как правильно справиться с необходимостью эффективного сравнения всех файлов в ArrayList, при условии, что все они должны сравниваться. Если для этого достаточно вложенного цикла, это круто, я просто хотел убедиться, что это подходящий метод, условно.