SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
Programação para Sistemas
Corporativos
                     Cassiano Gunji

                           UNIBAN
                   2º Semestre - 2012




                                        1
2
Estruturas de Dados
 Estruturas de dados estáticas:
    Variáveis;
    Vetores (arrays).
 Estruturas de dados dinâmicas:
    Lista ligada;
    Fila;
    Pilha;
    Árvore.



                                   3
Lista Ligada

Primeiro             Último
   nó                  nó




      D    D   ...        D




                              4
Lista Ligada
 O nó é definido por uma classe com atributos e um
  ponteiro para outro nó (definido pela mesma classe);
 A Lista Ligada implementa métodos para manipular
  sua lista. Por exemplo:
   Adicionar um novo nó;
   Pesquisar por um nó;
   Retirar um nó.




                                                         5
Árvore de Pesquisa Binária
             Primeiro nó



                 D


         D                 D


                     D

                               6
Árvore de Pesquisa Binária
 Cada nó possui dois, um ou nenhum nó filho;
 Inserção de um novo nó:
    Se árvore vazia, insira um novo nó;
    Se o novo nó é menor que a raiz da árvore atual, insira na
     sub-árvore esquerda;
    Se o novo nó é maior que a raiz da árvore atual, insira na
     sub-árvore direita;
 Ex: Inserir os seguintes valores na árvore e percorrer
  em ordem: [27, 13, 42, 33, 17, 48, 6]


                                                                  7
Árvore de Pesquisa Binária
 A árvore pode ser percorrida em:
    Na ordem;
        Percorra sub-árvore esquerda;
        Processe o nó;
        Percorra a sub-árvore direita.
   Pré-ordem;
     Processe o nó;
     Percorra sub-árvore esquerda;
     Percorra a sub-árvore direita.
   Pós-ordem.
     Percorra sub-árvore esquerda;
     Percorra a sub-árvore direita;
     Processe o nó.




                                          8
Implementando um Nó de Lista
Ligada
public class No      public class Lista
{                    {
  public int dado;     private No primeiro;
  public No prox;
}                        public void inserePrimeiro
                         (int dado)
                         {
                               No aux = new No;
                               aux.dado = dado;
                               aux.prox = primeiro;
                               primeiro = aux;
                         }
                     }

                                                      9
10
Motivação
 Tarefas semelhantes executadas em tipos diferentes
 requerem sobrecarga (overload)
   public static void imprime (double dado) {...}
   public static void imprime (int dado) {...}
   public static void imprime (String dado) {...}




                                                       11
Métodos Genéricos
 Se o método imprime não usar características
  específicas de dado, então um único método genérico
 pode ser escrito:
   public static <E> void imprime (E dado) {...}
 Métodos genéricos podem usar um parâmetro de tipo
 como retorno:
   public static <E> E maior (E dado1, E dado2) {...}
 O tipo E, nos dois casos, assume o tipo dos parâmetros
 dos métodos.

                                                           12
Classes Genéricas
public class ClasseGenerica <E>
{
  ...
  public static void imprime (E dado) {...}
  public static E maior (E dado1, E dado2) {...}
  ...
}



                                                   13
Instanciando Classes Genéricas
...
ClasseGenerica <String> objetoTexto = new
    ClasseGenerica <String>();

ClasseGenerica <Integer> objetoInteiro = new
  ClasseGenerica <Integer>();

ClasseGenerica objeto = new ClasseGenerica();
...

                                                14
(java.util)




              15
API Collections
                                   Collection


               List                                            Set
                                Array
                             Dimensionável

LinkedList            ArrayList                 HashSet              SortedSet

                                                   Tabela de
 Lista
Ligada                                               Hash             TreeSet
                       Map
                                                                             Árvore
                                                                           Balanceada


         HashMap          SortedMap                                  Iterator
                                               Árvore
         Tabela de                           Balanceada         ListIterator
           Hash              TreeMap
                                                                                  16
Comentários sobre Estruturas de Dados
 Arrays
   Acesso a um determinado elemento através de seu índice é feito em
    tempo constante.
   Inserção e exclusão de novos elementos depende da quantidade de
    elementos já existente no array.
   Permite uso de busca binária, se o array estiver classificado, caso
    contrário, exige busca seqüencial.
 Listas Ligadas
   Inserção e exclusão nas extremidades é feita em tempo
    constante(pilhas e filas).
   Busca seqüencial.
 Tabelas de Hash
   Busca, inserção e exclusão praticamente em tempo constante.
   Os elementos não são classificados.
 Árvores Binárias Balanceadas de Busca
   Busca, inserção e exclusão em tempo logarítmico.
   Os elementos são classificados.

                                                                          17
Comentários sobre Estruturas de Dados
 Listas (LinkedList e ArrayList)
   Permitem duplicidade de elementos.
   A ordem de inserção dos elementos é mantida.

 Conjuntos (HashSet e TreeSet)
   Não permitem duplicidade de elementos.
   A ordem de inserção dos elementos não é mantida.

 Mapas (HashMap e TreeMap)
   Os elementos são associados a uma chave.
   O acesso aos elementos é feito através da chave, e não através do
    próprio elemento.
   Não há duplicidade de chaves.

                                                                  18
Interface Collection <E>            (java.util.Collection)

 Alguns Métodos
    boolean add ( E elemento )
   Adiciona um elemento à coleção.
    void clear ( )
   Remove todos os elementos da coleção.
    boolean contains ( Object elemento )
   Retorna true se o elemento estiver contido na coleção.
    boolean isEmpty ( )
   Retorna true se a coleção estiver vazia.
    Iterator <E> iterator ( )
   Retorna um iterador para a coleção.
    boolean remove ( Object elemento )
   Remove um elemento da coleção e o retorna.
    int size ( )
   Retorna a quantidade de elementos na coleção.
    Object [ ] toArray ( )
   Retorna os elementos da coleção na forma de um array.

                                                             19
Exemplo Interface List
import java.util.*;
public class ExemploList {
  public static void main(String[] args) {
    List<String> lista = new LinkedList<String>();
    //List<String> lista = new ArrayList<String>();
    lista.add("Maria");
    lista.add("José");
    lista.add("Joaquim");
    System.out.println(lista.size() + " - " + lista);
    lista.remove("José");
    System.out.println(lista.size() + " - " + lista);
    System.out.println("Primeiro nome: " + lista.get(0));
    String nome = "Joaquim";
    System.out.println(nome + " está na posição " + lista.indexOf(nome));
    System.out.println(lista.size() + " - " + lista);
  }
}

                                                                        20
Classe LinkedList<E>             (java.util.LinkedList)

 Alguns Construtores
    LinkedList ( )
    LinkedList ( Collection c )

 Alguns Métodos
    void add ( int índice, E elemento )
   Adiciona um elemento à lista.
    void addFirst ( E elemento )
   Adiciona um elemento no início da lista.
    void addLast ( E elemento )
   Adiciona um elemento no final da lista.
    E element ( )
   Retorna, mas não exclui, o elemento no início da lista.
    E get ( int índice )
   Retorna um elemento da lista.

                                                             21
Classe LinkedList<E>                (java.util.LinkedList)

    E getFirst ( )
     Retorna o primeiro elemento da lista.
    E getLast ( )
     Retorna o último elemento da lista.
    int indexOf ( Object elemento )
     Retorna o índice da primeira ocorrência do elemento, -1 se o elemento não
     estiver contido na lista.
    ListIterator<E> listIterator ( )
     Retorna o iterador da lista.
    E remove ( int índice )
     Remove um elemento da lista e o retorna.
    E removeFirst ( )
     Remove o primeiro elemento da lista e o retorna.
    E removeLast ( )
     Remove o último elemento da lista e o retorna.
    E set ( int índice, E elemento )
     Troca um elemento na lista.


                                                                                 22
Exemplo LinkedList
import java.util.*;

public class ExemploLinkedList {
  public static void main(String[] args) {
     LinkedList<String> lista = new LinkedList<String>();
     lista.add("Maria");
     lista.addFirst("José");
     lista.add("Joaquim");
     System.out.println(lista.size() + " - " + lista);
     lista.removeFirst();
     System.out.println(lista.size() + " - " + lista);
     System.out.println("Último nome: " + lista.getLast());
     String nome = "José";
     System.out.println(nome + " está na posição " + lista.indexOf(nome));
  }
}


                                                                             23
Percurso em uma LinkedList
import java.util.*;
public class PercursoLinkedList {
  public static void main(String[] args) {
           LinkedList<String> lista = new LinkedList<String>();
           lista.add("Maria"); lista.add("José");     lista.add("Joaquim");
           // Percurso do início para o final
           Iterator<String> item = lista.iterator();
           while (item.hasNext()) {
                 System.out.println(item.next());
           }
           for (String elemento : lista) {
                 System.out.println(elemento);
           }
           // Percurso do final para o início
           int tamanho = lista.size();
           ListIterator<String> itemReverso = lista.listIterator(tamanho);
           while (itemReverso.hasPrevious()) {
                 System.out.println(itemReverso.previous());
           }
  }
}



                                                                              24
Classe ArrayList<E>              (java.util.ArrayList)

 Alguns Construtores
    ArrayList ( )
    ArrayList ( int capacidadeInicial )
 Alguns Métodos
    void add ( int índice, E elemento )
   Adiciona um elemento à lista.
    E get ( int índice )
   Retorna um elemento da lista.
    int indexOf ( Object elemento )
   Retorna o índice da primeira ocorrência do elemento, -1 se o elemento
    não estiver contido na lista.
    E remove ( int índice )
   Remove um elemento da lista e o retorna.
    E set ( int índice, E elemento )
   Troca um elemento na lista.


                                                                           25
Classe HashSet<E>              (java.util.HashSet)

 Alguns Construtores
   HashSet ( )
   HashSet ( int capacidadeInicial )
 Alguns Métodos
   boolean add ( E elemento )
   Adiciona um elemento à coleção.
   boolean contains ( Object elemento )
   Retorna true se o elemento estiver contido na coleção.
   boolean isEmpty ( )
   Retorna true se a coleção estiver vazia.
   Iterator <E> iterator ( )
   Retorna o iterador da coleção
   boolean remove ( Object elemento )
   Remove o elemento da coleção
   int size ( )
   Retorna a quantidade de elementos da coleção
                                                            26
Exemplo HashSet
import java.util.*;
public class ExemploHashSet {
  public static void main(String[] args) {
    HashSet<String> conjunto = new HashSet<String>();
    conjunto.add("Maria");
    conjunto.add("José");
    conjunto.add("Joaquim");
    conjunto.add("Maria");
    System.out.println("Possui " + conjunto.size() + " elementos");
    // Percurso em ordem INDETERMINADA
    Iterator<String> item = conjunto.iterator();
    while (item.hasNext()) {
          System.out.println(item.next());
    }
  }
}
                                                                      27
Classe TreeSet<E>             (java.util.TreeSet)

 Alguns Construtores
   TreeSet ( )
   TreeSet ( Comparator comparador )
 Alguns Métodos
   boolean add ( E elemento )
   Adiciona um elemento à coleção.
   void clear ( )
   Remove todos os elementos da coleção.
   boolean contains ( Object elemento )
   Retorna true se o elemento estiver contido na coleção.
   E first ( )
   Retorna o primeiro elemento da coleção.
   boolean isEmpty ( )
   Retorna true se a coleção estiver vazia.


                                                            28
Classe TreeSet<E>          (java.util.TreeSet)

   Iterator <E> iterator ( )
    Retorna o iterador da coleção
   E last ( )
    Retorna o último elemento da coleção.
   boolean remove ( Object elemento )
    Remove o elemento da coleção
   int size ( )
    Retorna a quantidade de elementos da coleção




                                                   29
Exemplo TreeSet
import java.util.*;
public class ExemploTreeSet {
  public static void main(String[] args) {
         TreeSet<String> conjunto = new TreeSet<String>();
         conjunto.add("Maria");
         conjunto.add("José");
         conjunto.add("Joaquim");
         conjunto.add("Maria");
         System.out.println("Possui " + conjunto.size() + " elementos");
         // Percurso em ordem crescente
         Iterator<String> item = conjunto.iterator();
         while (item.hasNext()) {
              System.out.println(item.next());
         }
  }
}
                                                                           30
Classe Collections (java.util.Collections)
    void sort ( List lista )
     Classifica os elementos de uma lista .
    int binarySearch ( List lista, Object chavePesquisa )
     Retorna o índice I da lista onde o elemento está, ou um valor negativo I
     caso a chavePesquisa não seja encontrada. O elemento deve ser
     inserido na posição (I + 1) * -1 para a lista continuar ordenada.
    Object min (Collection coleção )
     Retorna o menor elemento da lista.
    Object max (Collection coleção )
     Retorna o maior elemento da lista.
    void copy ( List para, List de)
     Copia todos os elementos de uma lista para outra.
    void fill ( List lista, Object valor )
     Define todas as posições de uma lista com um determinado valor.
    void reverse ( List lista )
     Inverte a ordem dos elementos na lista.


                                                                         31
Interface Map<K, V>              (java.util.Map)

 Alguns Métodos
   void clear ( )
   Remove todos os mapeamentos do mapa.
   boolean containsKey ( Object chave )
   Retorna true se há algum elemento mapeado pela chave.
   boolean containsValue ( Object valor )
   Retorna true se há alguma chave mapeando o valor.
   Set <Map.Entry <K, V>> entrySet( )
   Retorna um Set contendo os valores mapeados.
   V get ( Object chave )
   Retorna o elemento mapeado pela chave. Ou null caso não exista.
   boolean isEmpty ( )
   Retorna true se o mapa estiver vazio.
   Set <K> keySet ( )
   Retorna um Set contendo as chaves do mapa.
   V put ( K chave, V valor )
   Associa um valor a uma chave no mapa.
                                                                     32
Interface Map<K, V>            (java.util.Map)

 Alguns Métodos
   V remove (Object chave)
   Remove um mapeamento do mapa.
   int size ( )
   Retorna o número de pares chave-valor do mapa.
   Collection V values ( )
   Retorna uma Collection contendo os valores do mapa.




                                                         33
Percurso em um Map
import java.util.*;
public class ExemploMap {
  static final String[] produtos = {"Laranja", "Melão", "Goiaba"};
  public static void main(String[] args) {
    Map<Integer, Integer> mapa = new HashMap<Integer, Integer>();
    mapa.put(1, 5);
    mapa.put(1, 2);
    mapa.put(2, 3);
    System.out.print("O carrinho possui " + mapa.size());
    System.out.println(" produtos");
    Set<Integer> carrinho = mapa.keySet();
    Iterator<Integer> p = carrinho.iterator();
    while (p.hasNext()) {
          Integer item = p.next();
          System.out.print("Produto: " + produtos[item]);
          System.out.println(" Quantidade: " + mapa.get(item));
    }
  }
}

                                                                     34
Classe HashMap<K, V>                  (java.util.HashMap)

 Alguns Construtores
   HashMap ( )
   HashMap ( int capacidadeInicial )
 Alguns Métodos
   void clear ( )
   Remove todos os elementos da coleção.
   boolean containsKey ( Object chave )
   Retorna true se há algum elemento mapeado pela chave.
   boolean containsValue ( Object valor )
  Retorna true se há alguma chave mapeando o valor.
   <V> get ( Object chave )
  Retorna o elemento mapeado pela chave. Ou null caso não exista.
   boolean isEmpty ( )
   Retorna true se a coleção estiver vazia.



                                                                    35
Classe HashMap<K, V>               (java.util.HashMap)

   <V> put ( K chave, V valor )
    Insere um mapeamento na coleção.
   boolean remove ( Object chave )
    Remove o elemento mapeado pela chave.
   int size ( )
    Retorna a quantidade de elementos da coleção.
   Collection <V> values ( )
    Retorna uma coleção contendo os valores da estrutura.




                                                            36
Classe TreeMap<K, V>              (java.util.TreeMap)

 Alguns Construtores
   TreeMap ( )
   TreeMap ( Comparator comparador )
 Alguns Métodos
   void clear ( )
   Remove todos os elementos da coleção.
   boolean containsKey ( Object chave )
   Retorna true se há algum elemento mapeado pela chave.
   boolean containsValue ( Object valor )
   Retorna true se há alguma chave mapeando o valor.
   <E> firstKey ( )
  Retorna a primeira chave do mapa.
   <V> get ( Object chave )
  Retorna o elemento mapeado pela chave. Ou null caso não exista.
   <E> lastKey ( )
   Retorna a última chave do mapa.
                                                                    37
Classe TreeMap<K, V>             (java.util.TreeMap)

   <V> put ( K chave, V valor )
    Insere um mapeamento na coleção.
   boolean remove ( Object chave )
    Remove o elemento mapeado pela chave.
   int size ( )
    Retorna a quantidade de elementos da coleção.
   Collection <V> values ( )
    Retorna uma coleção contendo os valores do mapa.




                                                       38
Classe Properties (java.util.Properties)
 Construtores
    Properties ( )
    Properties ( Properties valoresPadrão)
 Alguns Métodos
    void put (String chave, String valor)
     Define um par chave-valor no conjunto de propriedades.
    String getProperty ( String chave )
     Retorna o valor associado a uma chave.
    String getProperty ( String chave, String valorPadrão )
     Retorna o valor associado a uma chave ou valorPadrão caso a chave não
     seja encontrada.
    void load ( InputStream entrada )
     Carrega um conjunto de propriedades de uma entrada.
    void store ( OutputStream saída, String comentário )
     Salva o conjunto de propriedades em uma saída.


                                                                       39
Exemplo utilizando Properties
import java.sql.*;
import java.util.*;
import java.io.*;
public class ExemploProperties {
  public static void main ( String args [ ] ) {
           Properties dados = new Properties();
           try {
                 FileInputStream fis = new FileInputStream("nomeArquivoPropriedades");
                 dados.load(fis);
           } catch(FileNotFoundException e) {
                 e.printStackTrace();
           } catch (IOException e) {
                 e.printStackTrace();
           }
           String driver = dados.getProperty("jdbcDriver");
           String banco = dados.getProperty("urlBanco");
           String usuario = dados.getProperty("usuarioBanco");
           String senha = dados.getProperty("senhaBanco");




                                                                                   40
Exemplo utilizando Properties
        try {
          Class.forName(driver);
          Connection con = DriverManager.getConnection(banco, usuario, senha);
          Statement st = con.createStatement ( );
          String sql = "SELECT * FROM nomeTabela ORDER BY nomeCampo";
          ResultSet rs = st.executeQuery ( sql );
          while ( rs.next() ) {
              System.out.println( rs.getString(1) + rs.getString(2) );
          }
        } catch (Exception e) {
                System.out.println ( e );
        }
    }                  jdbcDriver=com.mysql.jdbc.Driver
}                      urlBanco=jdbc:mysql://127.0.0.1:3306/uniban
                       usuarioBanco=root
                       senhaBanco=admin

                                                                                 41

Weitere ähnliche Inhalte

Was ist angesagt? (13)

Capítulo 6
Capítulo 6Capítulo 6
Capítulo 6
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Aula 16
Aula 16Aula 16
Aula 16
 
10 alocacao dinamica - listas ligadas
10   alocacao dinamica - listas ligadas10   alocacao dinamica - listas ligadas
10 alocacao dinamica - listas ligadas
 
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com JavaExercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
Exercicios Vetores (Arrays) - Estruturas de dados e algoritmos com Java
 
Aula 21
Aula 21Aula 21
Aula 21
 
Aula 15
Aula 15Aula 15
Aula 15
 
Seminário - Java Collections
Seminário - Java CollectionsSeminário - Java Collections
Seminário - Java Collections
 
python
pythonpython
python
 
Aula 13
Aula 13Aula 13
Aula 13
 
Listas Encadeadas
Listas EncadeadasListas Encadeadas
Listas Encadeadas
 
Listas (parte 1)
Listas (parte 1)Listas (parte 1)
Listas (parte 1)
 
Programando em python dicionarios
Programando em python   dicionariosProgramando em python   dicionarios
Programando em python dicionarios
 

Andere mochten auch

Andere mochten auch (6)

Palestra DFJUG #java20 anos - Web Hacking - desenvolva na defesa, jogando no...
Palestra DFJUG #java20 anos  - Web Hacking - desenvolva na defesa, jogando no...Palestra DFJUG #java20 anos  - Web Hacking - desenvolva na defesa, jogando no...
Palestra DFJUG #java20 anos - Web Hacking - desenvolva na defesa, jogando no...
 
Jdbc e hibernate
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
 
Java swing
Java swingJava swing
Java swing
 
Mercado de TI
Mercado de TIMercado de TI
Mercado de TI
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Tutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swingTutorial sistema vendas_em_java_com_swing
Tutorial sistema vendas_em_java_com_swing
 

Ähnlich wie Estruturas de Dados para Sistemas Corporativos

Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)rdgse
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Javadanrleywillian1
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasLeonardo Melo Santos
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em pythonAlvaro Oliveira
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsDenis L Presciliano
 
4234 mysql
4234 mysql4234 mysql
4234 mysqlherbam
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteirosRobson Eduardo
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Estruturas de Dados - Listas Encadeadas (Linked List)
Estruturas de Dados - Listas Encadeadas (Linked List)Estruturas de Dados - Listas Encadeadas (Linked List)
Estruturas de Dados - Listas Encadeadas (Linked List)Erick Petrucelli
 

Ähnlich wie Estruturas de Dados para Sistemas Corporativos (20)

Array list
Array listArray list
Array list
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
Collection Java (2/2)
Collection Java (2/2)Collection Java (2/2)
Collection Java (2/2)
 
Classes Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções JavaClasses Anônimas, Internas e Coleções Java
Classes Anônimas, Internas e Coleções Java
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricasCurso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
Curso de OO com C# - Parte 05 - Coleções genéricas e não-genéricas
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Java 14
Java 14Java 14
Java 14
 
Coleções Propriedade, Resources e Strings
Coleções Propriedade, Resources e StringsColeções Propriedade, Resources e Strings
Coleções Propriedade, Resources e Strings
 
Aula 17
Aula 17Aula 17
Aula 17
 
9 collections-ii
9 collections-ii9 collections-ii
9 collections-ii
 
4234 mysql
4234 mysql4234 mysql
4234 mysql
 
Apostila php 01
Apostila php 01Apostila php 01
Apostila php 01
 
Lista encadeada de inteiros
Lista encadeada de inteirosLista encadeada de inteiros
Lista encadeada de inteiros
 
Classes e Estrutura de Dados
Classes e Estrutura de DadosClasses e Estrutura de Dados
Classes e Estrutura de Dados
 
Aula05
Aula05Aula05
Aula05
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Estruturas de Dados - Listas Encadeadas (Linked List)
Estruturas de Dados - Listas Encadeadas (Linked List)Estruturas de Dados - Listas Encadeadas (Linked List)
Estruturas de Dados - Listas Encadeadas (Linked List)
 

Estruturas de Dados para Sistemas Corporativos

  • 1. Programação para Sistemas Corporativos Cassiano Gunji UNIBAN 2º Semestre - 2012 1
  • 2. 2
  • 3. Estruturas de Dados  Estruturas de dados estáticas:  Variáveis;  Vetores (arrays).  Estruturas de dados dinâmicas:  Lista ligada;  Fila;  Pilha;  Árvore. 3
  • 4. Lista Ligada Primeiro Último nó nó D D ... D 4
  • 5. Lista Ligada  O nó é definido por uma classe com atributos e um ponteiro para outro nó (definido pela mesma classe);  A Lista Ligada implementa métodos para manipular sua lista. Por exemplo:  Adicionar um novo nó;  Pesquisar por um nó;  Retirar um nó. 5
  • 6. Árvore de Pesquisa Binária Primeiro nó D D D D 6
  • 7. Árvore de Pesquisa Binária  Cada nó possui dois, um ou nenhum nó filho;  Inserção de um novo nó:  Se árvore vazia, insira um novo nó;  Se o novo nó é menor que a raiz da árvore atual, insira na sub-árvore esquerda;  Se o novo nó é maior que a raiz da árvore atual, insira na sub-árvore direita;  Ex: Inserir os seguintes valores na árvore e percorrer em ordem: [27, 13, 42, 33, 17, 48, 6] 7
  • 8. Árvore de Pesquisa Binária  A árvore pode ser percorrida em:  Na ordem;  Percorra sub-árvore esquerda;  Processe o nó;  Percorra a sub-árvore direita.  Pré-ordem;  Processe o nó;  Percorra sub-árvore esquerda;  Percorra a sub-árvore direita.  Pós-ordem.  Percorra sub-árvore esquerda;  Percorra a sub-árvore direita;  Processe o nó. 8
  • 9. Implementando um Nó de Lista Ligada public class No public class Lista { { public int dado; private No primeiro; public No prox; } public void inserePrimeiro (int dado) { No aux = new No; aux.dado = dado; aux.prox = primeiro; primeiro = aux; } } 9
  • 10. 10
  • 11. Motivação  Tarefas semelhantes executadas em tipos diferentes requerem sobrecarga (overload)  public static void imprime (double dado) {...}  public static void imprime (int dado) {...}  public static void imprime (String dado) {...} 11
  • 12. Métodos Genéricos  Se o método imprime não usar características específicas de dado, então um único método genérico pode ser escrito:  public static <E> void imprime (E dado) {...}  Métodos genéricos podem usar um parâmetro de tipo como retorno:  public static <E> E maior (E dado1, E dado2) {...}  O tipo E, nos dois casos, assume o tipo dos parâmetros dos métodos. 12
  • 13. Classes Genéricas public class ClasseGenerica <E> { ... public static void imprime (E dado) {...} public static E maior (E dado1, E dado2) {...} ... } 13
  • 14. Instanciando Classes Genéricas ... ClasseGenerica <String> objetoTexto = new ClasseGenerica <String>(); ClasseGenerica <Integer> objetoInteiro = new ClasseGenerica <Integer>(); ClasseGenerica objeto = new ClasseGenerica(); ... 14
  • 16. API Collections Collection List Set Array Dimensionável LinkedList ArrayList HashSet SortedSet Tabela de Lista Ligada Hash TreeSet Map Árvore Balanceada HashMap SortedMap Iterator Árvore Tabela de Balanceada ListIterator Hash TreeMap 16
  • 17. Comentários sobre Estruturas de Dados  Arrays  Acesso a um determinado elemento através de seu índice é feito em tempo constante.  Inserção e exclusão de novos elementos depende da quantidade de elementos já existente no array.  Permite uso de busca binária, se o array estiver classificado, caso contrário, exige busca seqüencial.  Listas Ligadas  Inserção e exclusão nas extremidades é feita em tempo constante(pilhas e filas).  Busca seqüencial.  Tabelas de Hash  Busca, inserção e exclusão praticamente em tempo constante.  Os elementos não são classificados.  Árvores Binárias Balanceadas de Busca  Busca, inserção e exclusão em tempo logarítmico.  Os elementos são classificados. 17
  • 18. Comentários sobre Estruturas de Dados  Listas (LinkedList e ArrayList)  Permitem duplicidade de elementos.  A ordem de inserção dos elementos é mantida.  Conjuntos (HashSet e TreeSet)  Não permitem duplicidade de elementos.  A ordem de inserção dos elementos não é mantida.  Mapas (HashMap e TreeMap)  Os elementos são associados a uma chave.  O acesso aos elementos é feito através da chave, e não através do próprio elemento.  Não há duplicidade de chaves. 18
  • 19. Interface Collection <E> (java.util.Collection)  Alguns Métodos  boolean add ( E elemento ) Adiciona um elemento à coleção.  void clear ( ) Remove todos os elementos da coleção.  boolean contains ( Object elemento ) Retorna true se o elemento estiver contido na coleção.  boolean isEmpty ( ) Retorna true se a coleção estiver vazia.  Iterator <E> iterator ( ) Retorna um iterador para a coleção.  boolean remove ( Object elemento ) Remove um elemento da coleção e o retorna.  int size ( ) Retorna a quantidade de elementos na coleção.  Object [ ] toArray ( ) Retorna os elementos da coleção na forma de um array. 19
  • 20. Exemplo Interface List import java.util.*; public class ExemploList { public static void main(String[] args) { List<String> lista = new LinkedList<String>(); //List<String> lista = new ArrayList<String>(); lista.add("Maria"); lista.add("José"); lista.add("Joaquim"); System.out.println(lista.size() + " - " + lista); lista.remove("José"); System.out.println(lista.size() + " - " + lista); System.out.println("Primeiro nome: " + lista.get(0)); String nome = "Joaquim"; System.out.println(nome + " está na posição " + lista.indexOf(nome)); System.out.println(lista.size() + " - " + lista); } } 20
  • 21. Classe LinkedList<E> (java.util.LinkedList)  Alguns Construtores  LinkedList ( )  LinkedList ( Collection c )  Alguns Métodos  void add ( int índice, E elemento ) Adiciona um elemento à lista.  void addFirst ( E elemento ) Adiciona um elemento no início da lista.  void addLast ( E elemento ) Adiciona um elemento no final da lista.  E element ( ) Retorna, mas não exclui, o elemento no início da lista.  E get ( int índice ) Retorna um elemento da lista. 21
  • 22. Classe LinkedList<E> (java.util.LinkedList)  E getFirst ( ) Retorna o primeiro elemento da lista.  E getLast ( ) Retorna o último elemento da lista.  int indexOf ( Object elemento ) Retorna o índice da primeira ocorrência do elemento, -1 se o elemento não estiver contido na lista.  ListIterator<E> listIterator ( ) Retorna o iterador da lista.  E remove ( int índice ) Remove um elemento da lista e o retorna.  E removeFirst ( ) Remove o primeiro elemento da lista e o retorna.  E removeLast ( ) Remove o último elemento da lista e o retorna.  E set ( int índice, E elemento ) Troca um elemento na lista. 22
  • 23. Exemplo LinkedList import java.util.*; public class ExemploLinkedList { public static void main(String[] args) { LinkedList<String> lista = new LinkedList<String>(); lista.add("Maria"); lista.addFirst("José"); lista.add("Joaquim"); System.out.println(lista.size() + " - " + lista); lista.removeFirst(); System.out.println(lista.size() + " - " + lista); System.out.println("Último nome: " + lista.getLast()); String nome = "José"; System.out.println(nome + " está na posição " + lista.indexOf(nome)); } } 23
  • 24. Percurso em uma LinkedList import java.util.*; public class PercursoLinkedList { public static void main(String[] args) { LinkedList<String> lista = new LinkedList<String>(); lista.add("Maria"); lista.add("José"); lista.add("Joaquim"); // Percurso do início para o final Iterator<String> item = lista.iterator(); while (item.hasNext()) { System.out.println(item.next()); } for (String elemento : lista) { System.out.println(elemento); } // Percurso do final para o início int tamanho = lista.size(); ListIterator<String> itemReverso = lista.listIterator(tamanho); while (itemReverso.hasPrevious()) { System.out.println(itemReverso.previous()); } } } 24
  • 25. Classe ArrayList<E> (java.util.ArrayList)  Alguns Construtores  ArrayList ( )  ArrayList ( int capacidadeInicial )  Alguns Métodos  void add ( int índice, E elemento ) Adiciona um elemento à lista.  E get ( int índice ) Retorna um elemento da lista.  int indexOf ( Object elemento ) Retorna o índice da primeira ocorrência do elemento, -1 se o elemento não estiver contido na lista.  E remove ( int índice ) Remove um elemento da lista e o retorna.  E set ( int índice, E elemento ) Troca um elemento na lista. 25
  • 26. Classe HashSet<E> (java.util.HashSet)  Alguns Construtores  HashSet ( )  HashSet ( int capacidadeInicial )  Alguns Métodos  boolean add ( E elemento ) Adiciona um elemento à coleção.  boolean contains ( Object elemento ) Retorna true se o elemento estiver contido na coleção.  boolean isEmpty ( ) Retorna true se a coleção estiver vazia.  Iterator <E> iterator ( ) Retorna o iterador da coleção  boolean remove ( Object elemento ) Remove o elemento da coleção  int size ( ) Retorna a quantidade de elementos da coleção 26
  • 27. Exemplo HashSet import java.util.*; public class ExemploHashSet { public static void main(String[] args) { HashSet<String> conjunto = new HashSet<String>(); conjunto.add("Maria"); conjunto.add("José"); conjunto.add("Joaquim"); conjunto.add("Maria"); System.out.println("Possui " + conjunto.size() + " elementos"); // Percurso em ordem INDETERMINADA Iterator<String> item = conjunto.iterator(); while (item.hasNext()) { System.out.println(item.next()); } } } 27
  • 28. Classe TreeSet<E> (java.util.TreeSet)  Alguns Construtores  TreeSet ( )  TreeSet ( Comparator comparador )  Alguns Métodos  boolean add ( E elemento ) Adiciona um elemento à coleção.  void clear ( ) Remove todos os elementos da coleção.  boolean contains ( Object elemento ) Retorna true se o elemento estiver contido na coleção.  E first ( ) Retorna o primeiro elemento da coleção.  boolean isEmpty ( ) Retorna true se a coleção estiver vazia. 28
  • 29. Classe TreeSet<E> (java.util.TreeSet)  Iterator <E> iterator ( ) Retorna o iterador da coleção  E last ( ) Retorna o último elemento da coleção.  boolean remove ( Object elemento ) Remove o elemento da coleção  int size ( ) Retorna a quantidade de elementos da coleção 29
  • 30. Exemplo TreeSet import java.util.*; public class ExemploTreeSet { public static void main(String[] args) { TreeSet<String> conjunto = new TreeSet<String>(); conjunto.add("Maria"); conjunto.add("José"); conjunto.add("Joaquim"); conjunto.add("Maria"); System.out.println("Possui " + conjunto.size() + " elementos"); // Percurso em ordem crescente Iterator<String> item = conjunto.iterator(); while (item.hasNext()) { System.out.println(item.next()); } } } 30
  • 31. Classe Collections (java.util.Collections)  void sort ( List lista ) Classifica os elementos de uma lista .  int binarySearch ( List lista, Object chavePesquisa ) Retorna o índice I da lista onde o elemento está, ou um valor negativo I caso a chavePesquisa não seja encontrada. O elemento deve ser inserido na posição (I + 1) * -1 para a lista continuar ordenada.  Object min (Collection coleção ) Retorna o menor elemento da lista.  Object max (Collection coleção ) Retorna o maior elemento da lista.  void copy ( List para, List de) Copia todos os elementos de uma lista para outra.  void fill ( List lista, Object valor ) Define todas as posições de uma lista com um determinado valor.  void reverse ( List lista ) Inverte a ordem dos elementos na lista. 31
  • 32. Interface Map<K, V> (java.util.Map)  Alguns Métodos  void clear ( ) Remove todos os mapeamentos do mapa.  boolean containsKey ( Object chave ) Retorna true se há algum elemento mapeado pela chave.  boolean containsValue ( Object valor ) Retorna true se há alguma chave mapeando o valor.  Set <Map.Entry <K, V>> entrySet( ) Retorna um Set contendo os valores mapeados.  V get ( Object chave ) Retorna o elemento mapeado pela chave. Ou null caso não exista.  boolean isEmpty ( ) Retorna true se o mapa estiver vazio.  Set <K> keySet ( ) Retorna um Set contendo as chaves do mapa.  V put ( K chave, V valor ) Associa um valor a uma chave no mapa. 32
  • 33. Interface Map<K, V> (java.util.Map)  Alguns Métodos  V remove (Object chave) Remove um mapeamento do mapa.  int size ( ) Retorna o número de pares chave-valor do mapa.  Collection V values ( ) Retorna uma Collection contendo os valores do mapa. 33
  • 34. Percurso em um Map import java.util.*; public class ExemploMap { static final String[] produtos = {"Laranja", "Melão", "Goiaba"}; public static void main(String[] args) { Map<Integer, Integer> mapa = new HashMap<Integer, Integer>(); mapa.put(1, 5); mapa.put(1, 2); mapa.put(2, 3); System.out.print("O carrinho possui " + mapa.size()); System.out.println(" produtos"); Set<Integer> carrinho = mapa.keySet(); Iterator<Integer> p = carrinho.iterator(); while (p.hasNext()) { Integer item = p.next(); System.out.print("Produto: " + produtos[item]); System.out.println(" Quantidade: " + mapa.get(item)); } } } 34
  • 35. Classe HashMap<K, V> (java.util.HashMap)  Alguns Construtores  HashMap ( )  HashMap ( int capacidadeInicial )  Alguns Métodos  void clear ( ) Remove todos os elementos da coleção.  boolean containsKey ( Object chave ) Retorna true se há algum elemento mapeado pela chave.  boolean containsValue ( Object valor ) Retorna true se há alguma chave mapeando o valor.  <V> get ( Object chave ) Retorna o elemento mapeado pela chave. Ou null caso não exista.  boolean isEmpty ( ) Retorna true se a coleção estiver vazia. 35
  • 36. Classe HashMap<K, V> (java.util.HashMap)  <V> put ( K chave, V valor ) Insere um mapeamento na coleção.  boolean remove ( Object chave ) Remove o elemento mapeado pela chave.  int size ( ) Retorna a quantidade de elementos da coleção.  Collection <V> values ( ) Retorna uma coleção contendo os valores da estrutura. 36
  • 37. Classe TreeMap<K, V> (java.util.TreeMap)  Alguns Construtores  TreeMap ( )  TreeMap ( Comparator comparador )  Alguns Métodos  void clear ( ) Remove todos os elementos da coleção.  boolean containsKey ( Object chave ) Retorna true se há algum elemento mapeado pela chave.  boolean containsValue ( Object valor ) Retorna true se há alguma chave mapeando o valor.  <E> firstKey ( ) Retorna a primeira chave do mapa.  <V> get ( Object chave ) Retorna o elemento mapeado pela chave. Ou null caso não exista.  <E> lastKey ( ) Retorna a última chave do mapa. 37
  • 38. Classe TreeMap<K, V> (java.util.TreeMap)  <V> put ( K chave, V valor ) Insere um mapeamento na coleção.  boolean remove ( Object chave ) Remove o elemento mapeado pela chave.  int size ( ) Retorna a quantidade de elementos da coleção.  Collection <V> values ( ) Retorna uma coleção contendo os valores do mapa. 38
  • 39. Classe Properties (java.util.Properties)  Construtores  Properties ( )  Properties ( Properties valoresPadrão)  Alguns Métodos  void put (String chave, String valor) Define um par chave-valor no conjunto de propriedades.  String getProperty ( String chave ) Retorna o valor associado a uma chave.  String getProperty ( String chave, String valorPadrão ) Retorna o valor associado a uma chave ou valorPadrão caso a chave não seja encontrada.  void load ( InputStream entrada ) Carrega um conjunto de propriedades de uma entrada.  void store ( OutputStream saída, String comentário ) Salva o conjunto de propriedades em uma saída. 39
  • 40. Exemplo utilizando Properties import java.sql.*; import java.util.*; import java.io.*; public class ExemploProperties { public static void main ( String args [ ] ) { Properties dados = new Properties(); try { FileInputStream fis = new FileInputStream("nomeArquivoPropriedades"); dados.load(fis); } catch(FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } String driver = dados.getProperty("jdbcDriver"); String banco = dados.getProperty("urlBanco"); String usuario = dados.getProperty("usuarioBanco"); String senha = dados.getProperty("senhaBanco"); 40
  • 41. Exemplo utilizando Properties try { Class.forName(driver); Connection con = DriverManager.getConnection(banco, usuario, senha); Statement st = con.createStatement ( ); String sql = "SELECT * FROM nomeTabela ORDER BY nomeCampo"; ResultSet rs = st.executeQuery ( sql ); while ( rs.next() ) { System.out.println( rs.getString(1) + rs.getString(2) ); } } catch (Exception e) { System.out.println ( e ); } } jdbcDriver=com.mysql.jdbc.Driver } urlBanco=jdbc:mysql://127.0.0.1:3306/uniban usuarioBanco=root senhaBanco=admin 41