Fundamentos da Linguagem Java



      Coleções da API do Java
             e Arrays



           Ludimila Monjardim Casagrande
                       2012
Arrays em Java

     Um array em Java é uma coleção ordenada de
         referências para objetos ou de valores de um
         tipo primitivo ou de outros arrays.
     Arrays em Java são homogêneos, isto é, exceto
         pelas regras de polimorfismo, todos os
         elementos de um array devem ser do mesmo
         tipo.
     Sendo assim, quando o array é criado, é
         especificado o tipo dos elementos que ele irá
         conter.


Coleções e Arrays       ©2012 Ludimila Monjardim Casagrande   2
Arrays em Java

     Para criar e usar um array são necessários
         três passos:

           Declaração;

           Construção;

           Inicialização.




Coleções e Arrays            ©2012 Ludimila Monjardim Casagrande   3
Declaração de um Array

     A sintaxe para a declaração de um array em
         Java é:
           <tipo> <variável>[ ];            ou
           <tipo>[ ] <variável>;
     Exemplo:
           int x[ ];   ou
           int[ ] x;
     Na declaração não é especificado o tamanho do
         array.

Coleções e Arrays            ©2012 Ludimila Monjardim Casagrande   4
Criação de um Array
     O tamanho do array só é especificado na sua
         criação, conforme o exemplo abaixo:
           x = new int[10]; //obrigatório definir o tamanho
     Somente nesse ponto é que o array x foi criado com
         10 posições, indexadas de 0 a 9.
     Também é permitido declarar e construir o array na
         mesma linha, por exemplo:
           int x[ ] = new int[10];
           String[ ] nomes = new String[5];


Coleções e Arrays          ©2012 Ludimila Monjardim Casagrande   5
Criação e Inicialização de um Array

     Também é possível construir um array já inicializando-
         o com alguns valores.

     Veja os exemplos:
           int[ ] x = {1, 2, 3, 4, 5};
           int[ ] x = new int[ ]{1, 2, 3, 4, 5};

     Nesses casos, o vetor será automaticamente criado
         com cinco posições e já iniciado com os valores entre
         { e }.


Coleções e Arrays            ©2012 Ludimila Monjardim Casagrande   6
Exemplo de Uso de um Array
         public class Array {
           public static void main(String[] args){
             int[ ] x = new int[10];
             x[9] = 8;
             //x[10] = 9; //ArrayIndexOutOfBoundsException!!!
             System.out.println("O tamanho do array é: " + x.length);
             //Laço que insere valores no Array
             for(int i = 0; i < x.length; i++){
                 x[i] = i * 2;
             }
             for(int i = 0; i < x.length; i++){
                 System.out.println("O argumento " + i + " é: " + x[i]);
             }
           }
         }
Coleções e Arrays            ©2012 Ludimila Monjardim Casagrande           7
Coleções em Java
     Estruturas de dados são mecanismos para manipular
         coleções de elementos em um programa.
     O pacote java.util oferece algumas classes definidas na
         API do Java que implementam funcionalidades
         associadas a estruturas de dados.
     Essas classes são conhecidas como “collections” ou
         “containers”.
     Algumas das classes que representam coleções
         providas pela API do Java são:
           Vector, ArrayList, LinkedList
           HashSet, TreeSet, entre outras

Coleções e Arrays            ©2012 Ludimila Monjardim Casagrande   8
Hierarquia de Coleções do Java

                                           Collection
                                                           Interface que representa
                                                           uma coleção genérica




                      List                                            Set
                                                                                Sub-interfaces de
Diferentes                                                                      Collection
implementações
da interface List


          Vector    ArrayList     LinkedList                HashSet         TreeSet




Coleções e Arrays               ©2012 Ludimila Monjardim Casagrande                            9
Coleções em Java

     A interface Collection é a raiz da hierarquia de
         coleções da API do Java.

     Algumas coleções permitem a existência de objetos
         duplicados, outras não.

     Algumas coleções são ordenadas e outras não.
     Essas são algumas das características que
         classificam as coleções em grupos mais
         específicos, tais como, Set e List.


Coleções e Arrays        ©2012 Ludimila Monjardim Casagrande   10
Listas e Conjuntos

     List e Set são duas das principais sub-interfaces
         da interface Collection.

     List é a interface que representa a especificação
         de coleções do tipo lista que, por definição,
         permitem objetos duplicados e são ordenadas.

     Set, por sua vez, representa os conjuntos que,
         por definição, não permitem objetos duplicados
         e não são necessariamente ordenados.


Coleções e Arrays        ©2012 Ludimila Monjardim Casagrande   11
Interface Collection

     Uma Collection não obedece a uma ordem
         especial e não rejeita objetos duplicados.
     A interface Collection define métodos que
         permitem à adição e remoção de elementos, a
         contagem desses elementos e a verificação de
         existência ou não de um determinado elemento
         na coleção, por exemplo.
     Uma coleção simples não impõe restrições
         quanto ao tipo dos objetos por ela
         armazenados.

Coleções e Arrays       ©2012 Ludimila Monjardim Casagrande   12
Interface Collection

      Principais métodos definidos pela interface Collection:
             boolean contains(Object o);
             boolean containsAll(Collection c);
             boolean add(Object o);
             boolean addAll(Collection c);
             boolean remove(Object o);
             boolean removeAll(Collection c);
             boolean isEmpty();
             int size();
             Object[] toArray();
      Observe que os métodos não são relacionados com posição.

Coleções e Arrays               ©2012 Ludimila Monjardim Casagrande   13
Interface List

      Uma classe que implementa List representa uma
          coleção ordenada que não rejeita duplicatas.
      Em algumas listas, a ordem pode ser a ordem na qual
          os objetos foram adicionados à coleção, em outras, os
          elementos possuem uma “ordem natural” que deve ser
          respeitada.
      A interface List define métodos relacionados à posição
          do elemento na coleção, como:
               int indexOf(Object o);
               Object get(int index);
               void add(int index, Object element);
               Object remove(int index);

Coleções e Arrays                ©2012 Ludimila Monjardim Casagrande   14
Interface Set

     As classes que implementam a interface Set
         devem definir os métodos de adição de
         elementos à coleção de modo a não permitir a
         inserção de duplicatas.
     Alguns conjuntos consideram o valor null como
         um elemento válido, no entanto, só pode existir
         uma ocorrência de null em toda a coleção.




Coleções e Arrays       ©2012 Ludimila Monjardim Casagrande   15
Classe ArrayList

      Para entendermos melhor o uso de uma coleção,
          vamos estudar a classe ArrayList que corresponde
          a uma das implementações da interface List.
      ArrayList é uma classe do Java (package java.util)
          usada para armazenar objetos de quaisquer tipos.
      Um objeto da classe ArrayList pode ser criado com
          um tamanho inicial e, se esse tamanho se tornar
          insuficiente, automaticamente o “array” será
          aumentado de modo transparente para o usuário da
          classe.

Coleções e Arrays        ©2012 Ludimila Monjardim Casagrande   16
Criação de um ArrayList

     O exemplo cria um objeto da classe ArrayList,
         para armazenar, inicialmente, 15 elementos.
     Se nenhum valor é passado no construtor, um
         objeto com capacidade para 10 elementos é
         criado.
     Exemplo:
           ArrayList list = new ArrayList(15);




Coleções e Arrays         ©2012 Ludimila Monjardim Casagrande   17
Adição de Elementos ao ArrayList

     Para se armazenar uma referência a um objeto
         em um ArrayList, a classe fornece o método
         add(Object o).
     Exemplo:
          1.Aluno a = new Aluno(“ana”, “123”, 1);
          2.list.add(a);
     O método add(Object o) adiciona o objeto
         recebido no final do“array”.


Coleções e Arrays          ©2012 Ludimila Monjardim Casagrande   18
Exemplo
 import java.util.*;

 public class CadAlunos {

      private static ArrayList alunos = new ArrayList(1);

      public static void main(String[ ] args){               O ArrayList aumenta de tamanho
        alunos.add(“Alessandro");                            automaticamente.
        alunos.add(“Eliane");
        alunos.add(“Miriam");

           Aluno a = new Aluno(“Carlos", "123", 1);
           alunos.add(a);
      }                                              O ArrayList permite a inserção de
 }                                                   elementos de diferentes tipos.


Coleções e Arrays              ©2012 Ludimila Monjardim Casagrande                        19
Listas Homogêneas

     A partir do Java 5.0, podemos usar o recurso
         chamado Generics para restringir as listas a um
         determinado tipo de objetos (e não qualquer
         Object):
           List<Aluno> alunos = new ArrayList<Aluno>();
           alunos.add(a1);
           alunos.add(a2);
           alunos.add(“Pedro”); // isso geraria erro de compilação




Coleções e Arrays             ©2012 Ludimila Monjardim Casagrande     20
Listas Homogêneas

     O uso de Generics também elimina a
         necessidade de casting, já que, seguramente,
         todos os objetos inseridos na lista serão do tipo
         Aluno:
          for(int i = 0; i < alunos.size(); i++) {
              Aluno a = alunos.get(i); // sem casting!
              System.out.println(a.getNome());
          }


Coleções e Arrays           ©2012 Ludimila Monjardim Casagrande   21
Adição de Elementos ao ArrayList

      Existe ainda uma versão do método add que
          também recebe um índice.
      Exemplo:
             list.add(0, a);
      Nesse caso o objeto será armazenado na
          posição 0.
      Se a posição indicada não existir, o método gera
          uma exceção IndexOutOfBoundsException.


Coleções e Arrays               ©2012 Ludimila Monjardim Casagrande   22
Recuperação de um Elemento

      Para recuperar um objeto de um ArrayList usamos
          o método get(int index).
      Exemplo:
            1. int i = 2;
            2. Aluno a = (Aluno)list.get(i); //casting necessário
      O método get retorna o objeto armazenado na
          posição indicada.
      Se o índice especificado não existir, o método
          gera uma exceção IndexOutOfBoundsException.
Coleções e Arrays           ©2012 Ludimila Monjardim Casagrande     23
Exemplo
   import java.util.*;
   public class CadAlunos {
        private static ArrayList alunos = new ArrayList(10);
        public static void main(String[] args){
           Aluno a = new Aluno("André", "andre", "123", 1);
           alunos.add(a);
           a = new Aluno("Carla", "carla", "456", 2);
           alunos.add(a);
           a = new Aluno("Cristiane", "cristiane", "789", 3);
           alunos.add(2, a);
             a = (Aluno)alunos.get(1);
             Iterator it = alunos.iterator();
             while (it.hasNext()) {
                 a = (Aluno)it.next();
                 System.out.println(a);
             }
        }
   }
Coleções e Arrays                    ©2012 Ludimila Monjardim Casagrande   24
Referências

     Java: Como programar
         Autores: H. M. Deitel e P. J. Deitel
         Editora: Pearson – 6ª Edição

     Capítulo 16 – Collections framework
         Apostila Caelum
         http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/

     Complete Java 2 Certification
         Study Guide
         Sybex

Coleções e Arrays             ©2012 Ludimila Monjardim Casagrande        25

POO - 23 - Coleções da API do Java

  • 1.
    Fundamentos da LinguagemJava Coleções da API do Java e Arrays Ludimila Monjardim Casagrande 2012
  • 2.
    Arrays em Java  Um array em Java é uma coleção ordenada de referências para objetos ou de valores de um tipo primitivo ou de outros arrays.  Arrays em Java são homogêneos, isto é, exceto pelas regras de polimorfismo, todos os elementos de um array devem ser do mesmo tipo.  Sendo assim, quando o array é criado, é especificado o tipo dos elementos que ele irá conter. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 2
  • 3.
    Arrays em Java  Para criar e usar um array são necessários três passos:  Declaração;  Construção;  Inicialização. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 3
  • 4.
    Declaração de umArray  A sintaxe para a declaração de um array em Java é:  <tipo> <variável>[ ]; ou  <tipo>[ ] <variável>;  Exemplo:  int x[ ]; ou  int[ ] x;  Na declaração não é especificado o tamanho do array. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 4
  • 5.
    Criação de umArray  O tamanho do array só é especificado na sua criação, conforme o exemplo abaixo:  x = new int[10]; //obrigatório definir o tamanho  Somente nesse ponto é que o array x foi criado com 10 posições, indexadas de 0 a 9.  Também é permitido declarar e construir o array na mesma linha, por exemplo:  int x[ ] = new int[10];  String[ ] nomes = new String[5]; Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 5
  • 6.
    Criação e Inicializaçãode um Array  Também é possível construir um array já inicializando- o com alguns valores.  Veja os exemplos:  int[ ] x = {1, 2, 3, 4, 5};  int[ ] x = new int[ ]{1, 2, 3, 4, 5};  Nesses casos, o vetor será automaticamente criado com cinco posições e já iniciado com os valores entre { e }. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 6
  • 7.
    Exemplo de Usode um Array public class Array { public static void main(String[] args){ int[ ] x = new int[10]; x[9] = 8; //x[10] = 9; //ArrayIndexOutOfBoundsException!!! System.out.println("O tamanho do array é: " + x.length); //Laço que insere valores no Array for(int i = 0; i < x.length; i++){ x[i] = i * 2; } for(int i = 0; i < x.length; i++){ System.out.println("O argumento " + i + " é: " + x[i]); } } } Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 7
  • 8.
    Coleções em Java  Estruturas de dados são mecanismos para manipular coleções de elementos em um programa.  O pacote java.util oferece algumas classes definidas na API do Java que implementam funcionalidades associadas a estruturas de dados.  Essas classes são conhecidas como “collections” ou “containers”.  Algumas das classes que representam coleções providas pela API do Java são:  Vector, ArrayList, LinkedList  HashSet, TreeSet, entre outras Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 8
  • 9.
    Hierarquia de Coleçõesdo Java Collection Interface que representa uma coleção genérica List Set Sub-interfaces de Diferentes Collection implementações da interface List Vector ArrayList LinkedList HashSet TreeSet Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 9
  • 10.
    Coleções em Java  A interface Collection é a raiz da hierarquia de coleções da API do Java.  Algumas coleções permitem a existência de objetos duplicados, outras não.  Algumas coleções são ordenadas e outras não.  Essas são algumas das características que classificam as coleções em grupos mais específicos, tais como, Set e List. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 10
  • 11.
    Listas e Conjuntos  List e Set são duas das principais sub-interfaces da interface Collection.  List é a interface que representa a especificação de coleções do tipo lista que, por definição, permitem objetos duplicados e são ordenadas.  Set, por sua vez, representa os conjuntos que, por definição, não permitem objetos duplicados e não são necessariamente ordenados. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 11
  • 12.
    Interface Collection  Uma Collection não obedece a uma ordem especial e não rejeita objetos duplicados.  A interface Collection define métodos que permitem à adição e remoção de elementos, a contagem desses elementos e a verificação de existência ou não de um determinado elemento na coleção, por exemplo.  Uma coleção simples não impõe restrições quanto ao tipo dos objetos por ela armazenados. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 12
  • 13.
    Interface Collection  Principais métodos definidos pela interface Collection:  boolean contains(Object o);  boolean containsAll(Collection c);  boolean add(Object o);  boolean addAll(Collection c);  boolean remove(Object o);  boolean removeAll(Collection c);  boolean isEmpty();  int size();  Object[] toArray();  Observe que os métodos não são relacionados com posição. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 13
  • 14.
    Interface List  Uma classe que implementa List representa uma coleção ordenada que não rejeita duplicatas.  Em algumas listas, a ordem pode ser a ordem na qual os objetos foram adicionados à coleção, em outras, os elementos possuem uma “ordem natural” que deve ser respeitada.  A interface List define métodos relacionados à posição do elemento na coleção, como:  int indexOf(Object o);  Object get(int index);  void add(int index, Object element);  Object remove(int index); Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 14
  • 15.
    Interface Set  As classes que implementam a interface Set devem definir os métodos de adição de elementos à coleção de modo a não permitir a inserção de duplicatas.  Alguns conjuntos consideram o valor null como um elemento válido, no entanto, só pode existir uma ocorrência de null em toda a coleção. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 15
  • 16.
    Classe ArrayList  Para entendermos melhor o uso de uma coleção, vamos estudar a classe ArrayList que corresponde a uma das implementações da interface List.  ArrayList é uma classe do Java (package java.util) usada para armazenar objetos de quaisquer tipos.  Um objeto da classe ArrayList pode ser criado com um tamanho inicial e, se esse tamanho se tornar insuficiente, automaticamente o “array” será aumentado de modo transparente para o usuário da classe. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 16
  • 17.
    Criação de umArrayList  O exemplo cria um objeto da classe ArrayList, para armazenar, inicialmente, 15 elementos.  Se nenhum valor é passado no construtor, um objeto com capacidade para 10 elementos é criado.  Exemplo:  ArrayList list = new ArrayList(15); Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 17
  • 18.
    Adição de Elementosao ArrayList  Para se armazenar uma referência a um objeto em um ArrayList, a classe fornece o método add(Object o).  Exemplo: 1.Aluno a = new Aluno(“ana”, “123”, 1); 2.list.add(a);  O método add(Object o) adiciona o objeto recebido no final do“array”. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 18
  • 19.
    Exemplo import java.util.*; public class CadAlunos { private static ArrayList alunos = new ArrayList(1); public static void main(String[ ] args){ O ArrayList aumenta de tamanho alunos.add(“Alessandro"); automaticamente. alunos.add(“Eliane"); alunos.add(“Miriam"); Aluno a = new Aluno(“Carlos", "123", 1); alunos.add(a); } O ArrayList permite a inserção de } elementos de diferentes tipos. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 19
  • 20.
    Listas Homogêneas  A partir do Java 5.0, podemos usar o recurso chamado Generics para restringir as listas a um determinado tipo de objetos (e não qualquer Object):  List<Aluno> alunos = new ArrayList<Aluno>();  alunos.add(a1);  alunos.add(a2);  alunos.add(“Pedro”); // isso geraria erro de compilação Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 20
  • 21.
    Listas Homogêneas  O uso de Generics também elimina a necessidade de casting, já que, seguramente, todos os objetos inseridos na lista serão do tipo Aluno: for(int i = 0; i < alunos.size(); i++) { Aluno a = alunos.get(i); // sem casting! System.out.println(a.getNome()); } Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 21
  • 22.
    Adição de Elementosao ArrayList  Existe ainda uma versão do método add que também recebe um índice.  Exemplo:  list.add(0, a);  Nesse caso o objeto será armazenado na posição 0.  Se a posição indicada não existir, o método gera uma exceção IndexOutOfBoundsException. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 22
  • 23.
    Recuperação de umElemento  Para recuperar um objeto de um ArrayList usamos o método get(int index).  Exemplo: 1. int i = 2; 2. Aluno a = (Aluno)list.get(i); //casting necessário  O método get retorna o objeto armazenado na posição indicada.  Se o índice especificado não existir, o método gera uma exceção IndexOutOfBoundsException. Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 23
  • 24.
    Exemplo import java.util.*; public class CadAlunos { private static ArrayList alunos = new ArrayList(10); public static void main(String[] args){ Aluno a = new Aluno("André", "andre", "123", 1); alunos.add(a); a = new Aluno("Carla", "carla", "456", 2); alunos.add(a); a = new Aluno("Cristiane", "cristiane", "789", 3); alunos.add(2, a); a = (Aluno)alunos.get(1); Iterator it = alunos.iterator(); while (it.hasNext()) { a = (Aluno)it.next(); System.out.println(a); } } } Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 24
  • 25.
    Referências  Java: Como programar Autores: H. M. Deitel e P. J. Deitel Editora: Pearson – 6ª Edição  Capítulo 16 – Collections framework Apostila Caelum http://www.caelum.com.br/curso/fj-11-java-orientacao-objetos/  Complete Java 2 Certification Study Guide Sybex Coleções e Arrays ©2012 Ludimila Monjardim Casagrande 25