Interface Collection

É a interface absoluta na hierarquia de coleções. Dela descendem as interfaces Set, Queue (filas) e List (listas) que formam a base das coleções genéricas da linguagem Java.

  • Set – define uma coleção que não contém valores duplicados.
  • Queue – define uma coleção que representa uma fila, ou seja, implementa o modelo FIFO (First-In, First-Out)
  • List - define uma coleção ordenada que pode conter elementos duplicados.

As classes e interfaces dessa estrutura de coleções são membros do pacote java.util.

Estrutura das coleções e mapas

Figura 1: Estrutura das coleções e mapas

Declarando uma coleção

Estrutura das coleções e mapas

Figura 2: Declaração interface Collection

No exemplo da Listagem 1, estamos declarando uma variável chamada colecao que somente irá armazenar tipos String nesse espaço. Nesse exemplo estamos instanciando a classe que implementa a interface, como descrito no diagrama da Figura 1.

Listagem 1: Declaração de Collections
Collection<String> colecao = new ArrayList();

Apenas lembrando que tanto para declarar List como Collection será necessário importar os seguintes pacotes: java.util.ArrayList e java.util.Collection.

Veja agora alguns métodos da interface List implementados pela classe ArrayList.

Adicionando elementos

Para adicionar o elemento é invocado o método add que aceita um argumento do tipo definido, como mostrado na Listagem 2. Cada vez que invocamos esse método para a mesma coleção é adicionado um valor no fim da lista.

Listagem 2: Adiciona valores
import java.util.Collection; 
import java.util.ArrayList;

public class MetodoAdd {
	public static void main(String[] args) {	
		Collection<String> nomes = new ArrayList();
		nomes.add("João");
		nomes.add("Maria");
		nomes.add("Eduardo");
		nomes.add("Silvana");
		nomes.add("Mário");
		
		System.out.println(“Lista de nomes: ”+nomes);
	}
}
Método isEmpty

Verifica se os dados dentro de um List estão vazios, tendo como retorno valor booleano, true ou false.

Listagem 3: Verificando a existência de valores
import java.util.Collection; 
import java.util.ArrayList;

public class Metodo_isEmpty {
	public static void main(String[] args) {
		Collection<String> letras = new ArrayList();
		letras.add("A");
		letras.add("B");
		letras.add("C");
		letras.add("D");
		letras.add("E");
		letras.add("F");
				
		if(letras.isEmpty()){
			System.out.println("Lista Vazia!");
		}else{
			System.out.println("Contém valores -> "+letras);
		}
	}
}

Nesse caso do exemplo da Listagem 3 a saída será a impressão das mensagens informando se a lista está vazia ou não, o que não ocorre, mas para testes poderia ser incluída uma ação para limpar essa lista através do método clear.

Removendo elementos

Para excluir uma ocorrência do valor especificado é usado o método remove.

Listagem 4: Removendo o elemento da posição 2
import java.util.Collection;
import java.util.ArrayList;

public class MetodoRemove {
	public static void main(String[] args) {
		Collection<Integer> fila = new ArrayList();
		fila.add(255);
		fila.add(312);
		fila.add(883);
		fila.add(122);
		fila.add(9);
		
		System.out.println(“Valores da fila: ”+fila);
	
		fila.remove(312); //REMOVE OBJETO 312
	
		System.out.println(“Valores atualizados da fila:”+fila);
	}
} 

Limpando os elementos da lista

Para executar essa ação basta invocar o método clear que irá limpar todos os elementos da coleção referenciada.

Listagem 5: Usando o método clear
import java.util.Collection; 
import java.util.ArrayList;

public class MetodoRemove {
	public static void main(String[] args) {
		Collection<String> livros = new ArrayList();
		livros.add("Java");
		livros.add("Php");
		livros.add("Python");
		livros.add("SQL");
		
		System.out.println("Listagem dos Livros: "+livros);

		livros.clear();

		System.out.println("Listagem após o clear: "+livros);

	}
}

Verificando se existem dados

Quando precisar verificar a existência de certos elementos dentro de uma coleção, é possível fazer isso através do método contains.

Listagem 6: Verifica se contém um elemento
import java.util.ArrayList;
import java.util.Collection;

public class VogaisColecao {

	public static void main(String[] args) {
		Collection<String> vogais = new ArrayList();
		vogais.add("A");
		vogais.add("E");
		vogais.add("I");
		vogais.add("O");
		vogais.add("U");
		
		System.out.println("Contém a vogal I ? "+vogais.contains("I"));
		System.out.println("Lista das vogais: "+vogais);
		
	}

}

Adicionando elementos de outra coleção

O método addAll permite adicionar todo os elementos de uma lista no final de outra.

Listagem 6: Adiciona elementos de uma coleção em outra
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Dois_Collections {

	public static void main(String[] args) {
		Collection<String> vogais = new ArrayList();
		vogais.add("A");
		vogais.add("E");
		vogais.add("I");
		
		Collection<String> vogais2 = Arrays.asList("O", "U");
		
		//RECEBE TODOS OS ELEMENTOS DA COLEÇÃO ADICIONANDO NA COLEÇÃO VOGAIS
		vogais.addAll(vogais2);
		
		System.out.println("Lista das Vogais: "+vogais);
		
	}

}

Percorrendo Elementos

Para percorrer os elementos de uma coleção de forma prática, usamos a instrução foreach que permite acessar cada item individualmente.

Listagem 7: Percorre e imprime os elementos de uma coleção
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

public class Percorre_Collections {

	public static void main(String[] args) {
		Collection<String> vogais = new ArrayList();
		vogais.add("A");
		vogais.add("E");
		vogais.add("I");
		vogais.add("O");
		vogais.add("U");

		//PERCORRE TODOS OS ELEMENTOS DA COLEÇÃO VOGAIS
		for(String vog : vogais){
			System.out.println("Vogal: "+vog);
		}
	}
}

Conclusão

Para mais informações sobre os métodos e conhecer mais sobre essa interface, acesse a documentação do Java através desse link: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html

Espero que tenham gostado e até a próxima!

Leia também o artigo: LinkedLists: O que acontece por trás da interface

Links Úteis

Saiba mais sobre Java ;)

  • Curso básico de Java Aplicado:
    O objetivo do curso de Java Básico aplicado é apresentar os conceitos básicos da linguagem de programação Java, assim como da Orientação a Objetos, aplicados em exemplos simples e úteis, utilizados pela maioria dos desenvolvedores no dia a dia do desenvolvimento de software.
  • Básico de Java e Orientação a Objetos:
    O objetivo deste curso básico de Java e Orientação a Objetos é apresentar os conceitos básicos da linguagem de programação Java e a orientação a objetos (OO), visando ensinar usuários leigos, com pouca experiência em linguagem de programação a trabalhar com a plataforma Java.
  • Curso de Java: Técnicas Avançadas para Java SE:
    Neste curso de Java avançado iremos nos aprofundar em tópicos de programação que ajudam você a entender os conceitos mais avançados de Java. Isso significa que o programador já precisa ter conhecimentos prévios da linguagem Java, bem como dos seus recursos, lógica de programação, depuração de código, IDEs, dentre outros conceitos básicos de programação.