Por exemplo, os arrays são estruturas de dados lineares e estáticas para armazenar dados, porém com capacidade limitada, ou seja deve-se inicializá-lo com um tamanho. Para aumentar essa capacidade durante a execução da aplicação teria que haver um algoritmo que aumente a capacidade de informações do array.
Código-fonte:
System.out.println("-------------------Arrays-------------------"); //inicializando array com 3 posições String[] array = new String[3]; //inserindo elementos array[0] = "A"; array[1] = "B"; array[2] = "C"; //ou // inicializando array com 3 elementos String[] array2 = { "A", "B", "C" }; //percorrendo o array para fazer a listagem dos dados for (int i = 0; i < array2.length; i++){ System.out.println(array2[i]); }Resultado:
-------------------Arrays------------------- A B C
Estruturas de dados Java
As estruturas de dados Java se encontram no pacote java.util. As operações básicas dessas estruturas são: adição, remoção, acesso e pesquisa. Podemos tratar uma estrutura de dados como uma coleção, pois este permite armazenar vários objetos. Os tipos de coleções estudados serão: Listas, Conjuntos e Mapas.
Listas As listas são estruturas de dados dinâmicas. Os elementos são arrumados numa ordem linear, ou seja, os elementos possuem sucessor (com exceção do ultimo elemento) e antecessor (com exceção do primeiro elemento). Alguns tipos de listas são: LIFO e FIFO Exemplo de lista: java.util.List Pilhas (LIFO): Last in, First out [Ultimo que entra, primeiro que sai] Os elementos de uma pilha são adicionados ao topo e removidos do topo também. Exemplo: java.util.StackCódigo Fonte:
System.out.println("-------------------Pilhas-------------------"); //criando a pilha Stack pilha = new Stack(); //inserindo valores na pilha pilha.push("A"); pilha.push("B"); pilha.push("C"); pilha.push(12.6); //pegando o topo da pilha System.out.println("Topo: " + pilha.peek()); //percorrendo a pilha for (int i = 0; i < pilha.size(); i++){ System.out.println(pilha.get(i)); } //removendo um elemento, e por ser uma pilha //ele removerá o elemento que foi inserido por ultimo pilha.pop(); System.out.println("Depois de remover um elemento:"); //percorrendo a pilha novamente for (int i = 0; i < pilha.size(); i++){ System.out.println(pilha.get(i)); }Resultado:
-------------------Pilhas------------------- Topo: 12.6 A B C 12.6 Depois de remover um elemento: A B C
Filas (FIFO): First in, First out [Primeiro que entra, primeiro que sai] Os elementos de uma pilha são adicionados ao final da fila e removidos do topo da mesma. Exemplo: java.util.Queue
Código Fonte:
System.out.println("-------------------Filas-------------------"); //criando a fila, Queue é apenas uma interface, //então utilizaremos a implentação LinkedList Queue fila = new LinkedList(); //inserindo elementos na fila fila.add("A"); fila.add("B"); fila.add("C"); fila.add(12.6); //pegando o topo da fila System.out.println("Topo: " + fila.peek()); //percorrendo a fila, este é outra forma de percorrer uma lista //o Object é o tipo do elemento, o obj é o elemento e a fila é nossa lista // o obj corresponderia ao get(i) da pilha for (Object obj : fila){ System.out.println(obj); } //removendo um elemento, e por ser uma fila //ele removerá o elemento que foi inserido por primeiro fila.remove(); System.out.println("Depois de remover um elemento:"); //percorrendo a fila novamente for (Object obj : fila) { System.out.println(obj); }Resultado:
-------------------Filas------------------- Topo: A A B C 12.6 Depois de remover um elemento: B C 12.6
Para entender melhor o funcionamento de pilha e fila, compare o resultado dos exemplos, pois os dois códigos fazem a mesma coisa, porém de formas diferentes.
Os conjuntos não permitem que seja inseridos elementos duplicados num mesmo conjunto, e também não tem uma ordem dos elementos como nas listas, assim como os conjuntos matemáticos.
Exemplo: java.util.Set Mapas
Um mapa armazena pares (chave, valor), essa chaves e valores podem ser de qualquer tipo. A chave é utilizada para achar um elemento rapidamente. Um mapa normalmente implementada como “Tabela Hash”. Exemplo: java.util.Map
Tabela Hash
Também chamada de: Tabela de dispersão ou tabela de espalhamento ou tabela hashing. É uma estrutura de dados especial, que associa chaves de pesquisa a valores. O objetivo é, a partir de uma chave simples, fazer uma busca rápida e obter o valor desejado.
Java Collection Framework "Desde a versão 1.2 do JDK (depois que o renomearam para Java 2 SDK), a plataforma J2SE inclui um framework de coleções (a Collections Framework). Uma coleção é um objeto que representa um grupo de objetos. Um framework de coleções é uma arquitetura unificada para representação e manipulação de coleções, permitindo que elas sejam manipuladas independentemente dos detalhes de sua implementação."Mais informações sobre o framework: http://javafree.uol.com.br/artigo/847654/
Set: Contém apenas os métodos herdados de Collection e adiciona a restrição de que elementos duplicados não são permitidos.
Exemplo:java.util.SetCodigo-fonte:
System.out.println("---------------Collection----------------"); System.out.println("-------------------Set-------------------"); //criando um set, como Set é interface, vamos utilizar a implementação HashSet Set< String > set = new HashSet< String >(); //inserindo elementos set.add("A"); set.add("B"); set.add("C"); set.add("A"); //removendo elemento "C" set.remove("C"); //percorrendo a coleção for (String obj : set){ System.out.println(obj); }Resultado:
---------------Collection---------------- -------------------Set------------------- A B
SortedSet:Usaremos implementações de SortedSet para situações onde desejarmos ordenar os elementos.
Exemplo: java.util.SortedSetCodigo-fonte:
System.out.println("-------------------SortedSet-------------------"); //criando um set ordenado, como SortedSet é interface, vamos utilizar a implementação TreeSet SortedSet< String > setOrdenado = new TreeSet< String >(); //inserindo elementos setOrdenado.add("B"); setOrdenado.add("A"); setOrdenado.add("C"); setOrdenado.add("A"); //percorrendo o conjunto for (String obj : setOrdenado){ System.out.println(obj); }Resultado:
-------------------SortedSet------------------- A B C
List: É uma coleção ordenada que pode conter valores duplicados. Além disso, temos controle total sobre a posição onde se encontra cada elemento de nossa coleção, podendo acessar cada um deles pelo índice.
System.out.println("-------------------List-------------------"); //criando um list, como List é interface, vamos utilizar a implementação ArrayList List< String > list = new ArrayList< String >(); //inserindo elementos na lista list.add("A"); list.add("C"); list.add("E"); //perconrrendo a lista System.out.println("Lista Atual"); for (String obj: list){ System.out.println(obj); } //inserindo um elemento numa determinada posição da lista list.add(1, "B"); //perconrrendo a lista System.out.println("Lista com novo elemento"); for (String obj: list){ System.out.println(obj); } //substituindo o elemendo de uma determinada posição list.set(3, "D"); //perconrrendo a lista System.out.println("Lista com elemento substituido"); for (String obj: list){ System.out.println(obj); }Resultado:
-------------------List------------------- Lista Atual A C E Lista com novo elemento A B C E Lista com elemento substituido A B C D
Queue: Normalmente utilizamos esta interface quando queremos uma coleção do tipo fila (FIFO).
Map: Map não é uma Collection pois uma Collection não trabalha com chaves. Utilizada em relações de chave-valor entre os elementos. Cada chave pode conter apenas um único valor associado.
Codigo-fonte:
System.out.println("-------------------Map-------------------"); //criando um mapa, Map é interface, HashMap é a implementação Map< String, String > mapa = new HashMap< String, String >(); //inserindo elementos no mapa: ex: a -> chave ; Letra A -> valor mapa.put("a", "Letra A"); mapa.put("b", "Letra B"); mapa.put("c", "Letra C"); //removendo pela chave mapa.remove("a"); //listando os elementos do mapa System.out.println("Listagem: " + mapa); //pegando um valor a partir do mapa System.out.println("Pegar a partir chave b: " + mapa.get("b"));Resultado:
-------------------Map------------------- Listagem: {b=Letra B, c=Letra C} Pegar a partir chave b: Letra B
SortedMap: Usaremos SortedMap para situações onde desejarmos ordenar os elementos, esses elementos são ordenados pela chave e não pelo valor.
Codigo-fonte:
System.out.println("-------------------SortedMap-------------------"); //criando um mapa ordenado SortedMap< String, String > mapaOrdenado = new TreeMap< String, String >(); //inserindo elementos no mapa mapaOrdenado.put ("um", "11111"); mapaOrdenado.put ("dois", "222222"); mapaOrdenado.put ("tres", "33333"); //listando os elementos do mapa System.out.println ("Listando: " + mapaOrdenado); //como a chave é uma String, a ordenação da mesma será por ordem alfabéticaResultado:
-------------------SortedMap------------------- Listando: {dois=222222, tres=33333, um=11111}
Obs: para executar os exemplos, crie uma classe com um método main e para executar no Netbeans utilize : Shift + F6
Exemplo:
public class Collections { public static void main(String[] args) { //Código-fonte aqui.! } }Referências: http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/ed/colecoes.htm http://download.oracle.com/javase/tutorial/collections/index.html
Ótimo post... Didático e completo .Muito bom mesmo.
ResponderExcluirObrigada EmilioFilho! :)
ResponderExcluirOs exemplos são simples, fáceis de serem entendidos! Me ajudou a montar uma apresentação! Obrigada...
ResponderExcluirOlá Patricia! Fico feliz por ter ajudado :)
ResponderExcluir