Coleções em Java - Iterable e Collection

Uma coleção é um conjunto de objetos, que chamamos elementos. 

Algumas coleções possuem recursos como:

  • repetição de elementos;
  • ordenação;
  • classificação.

As coleções derivam, direta ou indiretamente, da interface java.lang.Iterable<T>.

Iterable é uma interface que determina que uma coleção pode ter seus elementos alcançados por uma estrutura foreach. A interface só possui um método:

  • Iterator<T> iterator() » método iterator, que retorna um Iterator para uma coleção do tipo T.

OBS.: tipo T quer dizer: qualquer tipo. Se a coleção contiver Strings, T é String, se contiver Integer, T é Integer, e assim por diante.

A interface java.util.Collection<E>, que estende (pois é… em português extends é estende, com S!!!) Iterable, é a base para toda a hierarquia de coleções.

O Java não possui implementações (classes) diretas de Collection. Na verdade, Collection serve de base para interfaces mais específicas, como:

  • List;
  • Set.

Collection possui os seguintes métodos:

  • boolean add(Object o) » adiciona um elemento à coleção;
  • boolean addAll(Collection<? extends E> c) » adiciona todos os elementos de uma coleção à outra;
  • void clear() » remove (apaga) todos os elementos da coleção;
  • boolean contains(Object o) » retorna true se o objeto o pertence à coleção;
  • boolean containsAll(Collection<?> c) » retorna true se todos os o elementos de uma coleção c pertencem à coleção;
  • boolean equals(Object o) » retorna true se as referências de ambas as coleções são as mesmas;
  • int hashCode() » retorna o código hash da coleção;
  • boolean isEmpty() » retorna true se a coleção não contiver nenhum elemento; 
  • boolean remove(Object o) » remove um elemento o da coleção;
  • boolean removeAll(Collection<?> c) » remove da coleção todos os elementos da coleção c
  • boolean retainAll(Collection<?> c) » remove da coleção todos os elementos que não estão na coleção c;
  • int size() » retorna o tamanho (quantidade de elementos) da coleção;
  • Object[] toArray() » retorna um array de Objects, contendo todos os elementos da coleção;
  • <T> T[] toArray(T[] a) » retorna um array de elementos do mesmo tipo T passado como argumento, contendo todos os elementos da coleção;
  • Iterator<E> iterator() » retorna um Iterator para os elementos da coleção.

OBS.: Collection<? extends E> c quer dizer: objeto c, do tipo Collection, que contém elementos do mesmo tipo da coleção que está executando o método.