Junior — Middle
Explique as diferenças entre as interfaces Iterator, Comparator e Iterable em Java.
sobes.tech IA
Resposta da IA
Iterator — é uma interface que fornece métodos para percorrer uma coleção de forma sequencial (por exemplo, hasNext(), next(), remove()). Permite obter os elementos um a um, sem revelar a estrutura interna da coleção.
Iterable — é uma interface que indica que um objeto pode ser percorrido usando um iterador. Ela contém um método iterator(), que retorna um objeto do tipo Iterator. Graças a isso, o objeto pode ser usado em um ciclo for-each.
Comparator — é uma interface para definir a ordem de classificação de objetos. Ela contém o método compare(T o1, T o2), que determina qual dos dois objetos deve vir primeiro. É usada para ordenar coleções de acordo com critérios personalizados.
Exemplo:
List<String> list = Arrays.asList("maçã", "banana", "cereja");
// Iterable permite usar for-each
for (String fruta : list) {
System.out.println(fruta);
}
// Iterator para percorrer manualmente
Iterator<String> it = list.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// Comparator para ordenar por comprimento da string
Comparator<String> porComprimento = (s1, s2) -> Integer.compare(s1.length(), s2.length());
Collections.sort(list, porComprimento);
System.out.println(list); // [maçã, cereja, banana]