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]