Sobes.tech
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]