Usar coleções

Objetivos de aprendizagem

Após concluir esta unidade, você estará apto a:

  • Declarar e inicializar uma lista.
  • Explicar duas maneiras de adicionar itens a uma lista.
Você sabia que pode aprender com um especialista? Assista a este vídeo para saber mais sobre os tópicos deste módulo:

Coleções

Uma coleção é um tipo de variável que pode armazenar vários itens. Em nosso exemplo do chá, temos um açucareiro com vários cubos de açúcar. O açucareiro é considerado uma coleção e os cubos de açúcar são itens armazenados nessa coleção.

Uma coleção rotulada de “sugar bowl” (pote de açúcar). Cubos de açúcar no açucareiro são itens rotulados na coleção.

Embora existam três tipos de coleções do Apex (listas, conjuntos e mapas), neste módulo nos concentramos nas listas.  

Listas

Uma lista do Apex é um grupo ordenado de itens do mesmo tipo, como uma lista de compras. 

  1. Tea
  2. Sugar
  3. Honey
  4. Milk

Cada item na lista de compras é uma string (sequência de caracteres) e cada item tem uma posição na lista. Para declarar uma lista, você precisa de algumas coisas. Você usará a palavra reservada list, o tipo de dados (todos os itens devem ser do mesmo tipo de dados) dentro dos caracteres <> e a palavra reservada new. No final desta instrução, há parênteses obrigatórios. 

List <String> groceries = new List <String>();

Nota

Nota

Palavras reservadas são palavras de programação que têm um significado especial e não podem ser usadas como nomes de variáveis. Palavras como new, string, false, null e muitas outras irão gerar um erro de sintaxe se você nomear uma variável com o mesmo nome.

Declarar uma lista vazia

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
    //Declare the groceries list
    List<String> groceries = new List<String>();
    //The output for this statement is an empty list, ().
    System.debug('Groceries Value: ' + groceries);
  3. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  4. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Quando você executou o código, provavelmente notou que a saída era (). Como você não adicionou nada à lista, ela está vazia. Ao declarar a lista groceries (compras), você criou um único espaço vazio, pronto para os itens serem adicionados. 

Um grande slot vazio chamado groceries.

Declarar uma lista com um tamanho definido

Se sabemos exatamente o tamanho necessário da nossa lista, podemos definir o tamanho quando a lista for declarada. Fazemos isso incluindo o tamanho entre colchetes, [ ], após o tipo de dados, assim: 

String[] groceries = new String[4];

Esse código declara uma lista de sequências de caracteres chamada groceries e define seu tamanho como 4 sequências de caracteres. A lista groceries vazia fica assim:

Um espaço chamado groceries, dividido em quatro slots.

A posição sequencial de um item é um número chamado index (índice). O índice é como referenciamos os itens. Você provavelmente aprendeu a contar começando com o número um. No entanto, em muitas linguagens de programação, a contagem começa com o número zero. Então, agora nossa lista ficará assim quando escrevermos nosso código do Apex. 

0. Tea

1. Sugar

2. Honey

3. Milk

O índice que você usa para apontar para um determinado item na lista será índice 0 para Tea, índice 1 para Sugar, índice 2 para Honey e assim por diante. 

Você faz referência a um determinado item na lista pelo seu índice (sua posição na lista) assim:

groceries[0];

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
    String[] groceries = new String[4];
    System.debug('Initialized groceries: ' + groceries);
    System.debug('Item 0: ' + groceries[0]);
  3. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  4. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

O valor do primeiro item na lista é nulo. Vamos adicionar outro campo à lista.

Inicializar uma lista

Inicializar uma lista significa atribuir valores iniciais a uma lista. Há duas maneiras de adicionar itens a uma lista:

  1. Declarar e inicializar uma lista.
    //Sets the first item in the list to 'Tea'
    List<String> groceries = new List<String>{'Tea'}; 
  2. Declarar uma lista vazia e adicionar valores mais tarde.
List<String> groceries = new List<String>();
groceries.add('Tea');

Declarar e inicializar uma lista

A sintaxe para inicializar uma lista com valores é semelhante a declarar uma lista vazia. A diferença é que, em vez de usar parênteses ( () ), você usa chaves ( { } ) para adicionar valores. 

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
    //Declare the groceries list
    List<String> groceries = new List<String>{'Tea','Sugar','Honey','Milk'};
    //The output for this statement is Tea, Sugar, Honey, Milk
    System.debug('Groceries: ' + groceries);
  3. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  4. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Declarar uma lista vazia e adicionar valores mais tarde

Mas e se você deseja adicionar itens mais tarde? O Apex fornece métodos que permitem trabalhar com listas. Vamos usar o método add (adição) para adicionar produtos à lista de compras.

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
    //Create the groceries list
    List<String> groceries = new List<String>();
    //The output for this statement is null
    System.debug('Groceries: ' + groceries);
    //Use the add method to add an element to the list
    groceries.add('Tea');
    groceries.add('Sugar');
    groceries.add('Honey');
    groceries.add(2, 'Milk');
    //The output for this statement is Tea, Sugar, Milk, Honey
    System.debug('Groceries: ' + groceries);
  3. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  4. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Um espaço chamado groceries subdividido em quatro slots com um ingrediente em cada slot: Tea, Sugar, Milk e Honey.

Você notou o ponto (“.”) entre groceries e add? O Apex usa notação de ponto. A notação de ponto tem vários usos. Na linha 6, conectamos o método add (que o Apex oferece) à lista groceries com um ponto para adicionar um item (Tea) à lista.

A linha 9 demonstra outra maneira de adicionar um item a uma lista, colocando o item em um índice específico (posição): 

groceries.add(2, ‘Milk’);

Ao continuar trabalhando com código do Apex, você aprenderá a determinar qual método usar. Mas as noções básicas que você aprende nesta unidade podem ajudá-lo a começar. 

Desmistificar listas

Maneiras diferentes de adicionar itens a uma lista produzem resultados ligeiramente diferentes; às vezes, resultados inesperados. Experimente este exercício.

  1. No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
  2. Copie esse código e cole-o na janela Enter Apex Code (Inserir código do Apex).
    String[] groceries = new String[4];
    System.debug('Groceries: ' + groceries);
    groceries.add('Tea');
    groceries.add('Sugar');
    System.debug('Added 2 items: ' + groceries);
    groceries.add(1, 'Honey');
    System.debug('Added Honey in index 1: ' + groceries);
    System.debug('Item 0: ' + groceries[0]);
  3. Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar).
  4. O log de execução abre, exibindo o resultado da execução do seu código. Selecione a caixa de seleção Debug Only (Depurar somente) na parte inferior da janela.

Resultados interessantes:

Quatro eventos de log de depuração. A linha 2 diz Initialized groceries: (null, null, null, null). A linha 6 diz Added 2 items: (null, null, null, null, Tea, Sugar). A linha 9 diz: Added Honey in index 1: (null, Honey, null, null, Tea, Sugar). A linha 11 diz: Item 0: null.

Quando adicionamos as duas sequências nas linhas 3 e 4, não especificamos um índice, então Tea e Sugar foram adicionados ao final da lista, aumentando o tamanho da lista de quatro sequências de caracteres para seis sequências de caracteres. Na linha 6, especificamos explicitamente o índice 1 para Honey, então por que Honey não está na lista? Lembre-se de que quando programamos, sempre começamos a contar com 0 em vez de 1. Na linha 8, o primeiro índice na lista é 0, que atualmente contém um valor null

Escrever código é muito semelhante a fazer problemas de matemática. Você tem uma equação, mas há muitas maneiras de fazer uma coisa. Nesta unidade, você aprendeu que há mais de uma maneira de trabalhar com listas no Apex. Se você deseja declarar uma lista, inicializar uma lista ou se referir a um valor específico em uma lista, como fazer isso é uma escolha sua. Muitas opções? Não se preocupe. Quando você se sentir mais à vontade com o Apex, tente maneiras diferentes e começará a entender mais sobre quais maneiras funcionam melhor em quais circunstâncias.

Recursos