Ваш HashSet
является пустым при создании:
Set<Integer> movieLengthsSeen = new HashSet<>();
Однако следующий шаг - l oop через набор значений, переданных в метод. Я добавил комментарии для уточнения:
//movieLengths is passed in
for (int firstMovieLength : movieLengths) {
//create value from 2 passed in params
int matchingSecondMovieLength = flightLength - firstMovieLength;
//Here it checks to see if the value has been added to the hash,
//if so, return true (won't happen on the first pass because
//the hash set is empty).
//Otherwise continue with the algorithm.
if (movieLengthsSeen.contains(matchingSecondMovieLength)) {
return true;
}
//If the hash doesn't have the value, which it won't on the first pass
//and possible subsequent passes, it will add the value and repeat
movieLengthsSeen.add(firstMovieLength);
}
TLDR; HashSet
- это пусто. Он заполняется по мере выполнения for-l oop.