Sobes.tech
Back to questions
Junior — Middle
60

Объясните различия между интерфейсами Iterator, Comparator и Iterable в Java.

Answer from AI

sobes.tech AI

Iterator — это интерфейс, который предоставляет методы для последовательного обхода коллекции (например, hasNext(), next(), remove()). Он позволяет получить элементы по одному, не раскрывая внутреннюю структуру коллекции.

Iterable — интерфейс, который обозначает, что объект можно перебрать с помощью итератора. Он содержит один метод iterator(), который возвращает объект Iterator. Благодаря этому объект можно использовать в цикле for-each.

Comparator — интерфейс для задания порядка сортировки объектов. Он содержит метод compare(T o1, T o2), который определяет, какой из двух объектов должен идти раньше. Используется для сортировки коллекций по пользовательским критериям.

Пример:

List<String> list = Arrays.asList("apple", "banana", "cherry");

// Iterable позволяет использовать for-each
for (String fruit : list) {
    System.out.println(fruit);
}

// Iterator для обхода вручную
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

// Comparator для сортировки по длине строки
Comparator<String> byLength = (s1, s2) -> Integer.compare(s1.length(), s2.length());
Collections.sort(list, byLength);
System.out.println(list); // [apple, cherry, banana]