Ir para o conteúdo

Coleções

Definição

Listas

As listas são coleções de objetos onde é possível adicionar elementos repetidos e a ordem importa. A lista é relacionado com a sequência da matemática. O Java possui a interface List para definir a estrutura de dados das listas e possui implementações de alguns tipos de listas, entre eles o ArrayList, LinkedList e Vector.

O ArrayList é a estrutura mais comum onde os elementos são armazenados dentro de um arranjo.

Criação da Lista

A lista pode ser definida através de uma variável do tipo List. As coleções do Java utilizam tipos genéricos, portanto é preciso indicar qual o tipo de dados que será armazenado na lista. Para este fim, se utiliza o operador diamante <> para indicar o tipo de dados.

A instanciação da List deve ser feito através do tipo concreto, ou seja, a classe ArrayList.

// Criação de uma lista
List<Integer> lista = new ArrayList<Integer>();

// Cria um arraylist com um arranjo de tamanho 200 para guardar os elementos.
List<Integer> lista = new ArrayList<Integer>(200);

// Pode ser utilizado a inferência de tipos,
// porém o tipo de dados da variável é ArrayList
var lista = new ArrayList<Integer>();

Adicionar elementos

O método add(elemento) sempre adiciona no final da lista.

var lista = new ArrayList<Integer>();

lista.add(1);
lista.add(2);
lista.add(3);

O método add(index,elemento) adiciona o elemento na posição index. Caso a posição não exista, uma exceção é lançada.

var lista = new ArrayList<Integer>();

lista.add(1,99);

Obter um elemento pela posição

O método get(index) retorna o elemento na posição index. Caso a posição não exista, uma exceção é lançada.

var lista = new ArrayList<Integer>();

lista.get(1);

Atualizar um elemento pela posição

O método set(index,elemento) substitui o elemento na posição index. O método retorna o elemento substituído. Caso a posição não exista, uma exceção é lançada.

var lista = new ArrayList<Integer>();

var substituido = lista.set(1,99);

Remover elementos

O método remove(index) remove o elemento na posição index. O método retorna o elemento removido. Caso a posição não exista, uma exceção é lançada.

var lista = new ArrayList<Integer>();

var removido = lista.remove(99);

Métodos úteis

O List fornece uma gama de métodos uteis, tais como size, clear, contains entre outros.

var lista = new ArrayList<Integer>();


// Verifica se possui um elemento -
// true -> se possuir o elemento
// false -> se não possuir o elemento
var contem = list.contains(99);

// Localiza o índice do elemento
// Retorna -1 caso não encontrar o elemento na lista
var indice = list.indexOf(99);

// Retorna o índice do último elemento 99
var indice = list.lastIndexOf(99);

// tamanho da lista
var tamanho = list.size();

// Verificar se a lista está vazia
boolean vazio = list.isEmpty();

// Limpar a lista / remover todos os elementos
list.clear();

Percorrer a lista

A lista pode ser percorrida através da estrutura de repetição clássica com índices.

var lista = new ArrayList<Integer>();

for(var i = 0; i < lista.size(); i++){
  System.out.println(lista.get(i));
}

A estrutura for-each pode ser utilizada para percorrer a lista. Esta estrutura sempre percorre do primeiro elemento até o último. Neste tipo de repetição, o índice não é conhecido.

var lista = new ArrayList<Integer>();

for(var e : lista){
  System.out.println(e);
}

Conjuntos

Os conjuntos são coleções de objetos em que não é permitido adicionar elementos repetidos e a ordem dos elementos não é garantida. A coleção conjunto funciona de forma semelhante aos conjuntos da matemática.

O Java possui a interface Set para definir a estrutura de dados dos conjuntos e possui implementações de alguns tipos de conjuntos, entre eles o HashSet, EnumSet, LinkedSet e TreeSet.

O HashSet é a estrutura mais comum onde os elementos são armazenados dentro de um mapa.

Criação de um conjunto

Um conjunto pode ser definido por meio de uma variável do tipo Set. A instanciação do conjunto deve ser feito através do tipo concreto, ou seja, a classe HashSet.

Set<Integer> conjunto = new HashSet<Integer>();

var conjunto = new HashSet<Integer>();

Adicionar elementos

O método add(elemento) adiciona o elemento no conjunto. O elemento é descartado caso já existir no conjunto.


var conjunto = new HashSet<Integer>();
conjunto.add(1);
conjunto.add(2);
conjunto.add(3);

Verificar se um elemento existe

O método contains(elemento) verifica se o elemento existe no conjunto. Caso existir, retorna true. Caso contrário, retorna false.


var conjunto = new HashSet<Integer>();
var existe = conjunto.contains(1);

Remover elementos

O método remove(elemento) remove o elemento no conjunto. O método retorna true se o elemento existia no conjunto e foi removido. Caso contrário, retorna false.


var conjunto = new HashSet<Integer>();
var foiRemovido = conjunto.remove(1);

Métodos úteis

O conjunto fornece uma gama de métodos uteis, tais como size, clear entre outros.


var conjunto = new HashSet<Integer>();

// Verificar o tamanho
conjunto.size();

// Verificar se está vazio
var estaVazio = conjunto.isEmpty();

// Remover todos os elementos
conjunto.clear();

Percorrer o conjunto

O conjunto não possui o conceito de posições ou sequência dos elementos. Para percorrer os elementos de um conjunto, utiliza-se um Iterator.


var conjunto = new HashSet<Integer>();
conjunto.add(1);
conjunto.add(10);
conjunto.add(100);

for(var e : conjunto){
  System.out.println(e);
}

Mapas

Os mapas são coleções de objetos em que uma chave é utilizada para associar um determinado valor. A coleção mapa funciona de forma semelhante aos dicionários. O Java possui a interface Map para definir a estrutura de dados dos mapas e disponibiliza implementações de diferentes tipos de mapas, entre elas HashMap, LinkedHashMap e TreeMap. O HashMap é a implementação mais comum, em que os elementos são armazenados em uma estrutura baseada em tabela hash.

Criação de um mapa

O mapa possui dois tipos genéricos. O K representa o tipos de dados da chave e o V representa o tipo de dados do valor.

// Map<K,V>
Map<Integer,String> mapa = new HashMap<Integer,String>();

var mapa = new HashMap<Integer,String>();

Adicionando um par de elementos

Obter o elemento pela sua chave

Verificar se existe uma chave

Remover uma chave

Métodos úteis

Percorrendo um mapa