Introdução a Iterators

Entrada/Saída e Streams em Java

Alex Liu

Software Development Engineer

Trabalhando com coleções

  • Exemplo de HashSet para o restante do vídeo
import java.util.HashSet;

public class SampleHashSetData { public static void main(String[] args) { HashSet<String> fruits = new HashSet<>();
fruits.add("Apple"); fruits.add("Banana");
} }
{Apple, Banana}
Entrada/Saída e Streams em Java

Usar For-Each loop

  • For-Each loop
    • Formato: for (type x: collection){}
    • Processa cada elemento automaticamente
    • Funciona com várias coleções: List, Set, Map e mais
  • Exemplo: use o conjunto fruits: [Apple, Banana].
for (String x : fruits) {
    System.out.println(x);
}
Apple
Banana
Entrada/Saída e Streams em Java

Percorrendo uma coleção com Iterator

  • Use Iterator<>: oferece suporte a List, Set, Queue e mais
  • Importe a classe Iterator
import java.util.Iterator;

// Crie o objeto `Iterator` chamado `it` para o conjunto `fruits` Iterator<String> it = fruits.iterator(); // O método `.hasNext()` verifica se há mais elementos while (it.hasNext()) { // O `.next()` recupera o elemento System.out.print(it.next());}
Apple Banana
Entrada/Saída e Streams em Java

Removendo elementos com Iterator

  • Use .remove() para remover elemento com Iterator

$$

Iterator<String> it = fruits.iterator();
while (it.hasNext()) {
    String fruit = it.next();
    if (fruit.startsWith("A")) {
        // Remove o elemento se ele começar com `A`
        it.remove();
        }
}
// fruits agora contém apenas "Banana"
Entrada/Saída e Streams em Java

Removendo elementos com Iterator (continuação)

  • Antes de remover:

    System.out.println(fruits);
    
    [Apple, Banana]
    
  • Depois de remover:

    System.out.println(fruits);
    
    [Banana]
    
  • Garante exclusão segura e evita ConcurrentModificationException

Ícone representando exclusão segura

Entrada/Saída e Streams em Java

Resumo

  • For-Each loop
    • Suporta
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
    • Não suporta
      • Map
      • Remoção de elementos
  • Iterator
    • Suporta
      • List(ArrayList,LinkedList)
      • Set(HashSet,TreeSet,LinkedHashSet)
      • Queue(PriorityQueue)
      • Stack(Stack)
      • Map (Use keySet().iterator, values().iterator ou entrySet().iterator)
      • Remoção de elementos
Entrada/Saída e Streams em Java

Vamos praticar!

Entrada/Saída e Streams em Java

Preparing Video For Download...