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.
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.
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.
- Tea
- Sugar
- Honey
- 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.
Declarar uma lista vazia
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- 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);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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.
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:
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:
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.
- Tea
- Sugar
- Honey
- 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:
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- 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]);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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:
- Declarar e inicializar uma lista.
//Sets the first item in the list to 'Tea' List<String> groceries = new List<String>{'Tea'};
- 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.
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- 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);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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.
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- 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);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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.
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 8, conectamos o método add
(que o Apex oferece) à lista groceries
com um ponto para adicionar um item (Tea) à lista.
A linha 11 demonstra outra maneira de adicionar um item a uma lista, inserindo o item em um índice específico (posição):
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.
- No Developer Console, clique em Debug (Depurar) | Open Execute Anonymous Window (Abrir a janela Executar anônimo).
- 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]);
- Marque a caixa de seleção Open Log (Abrir registro) e clique em Execute (Executar). 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:
Quando adicionamos as duas sequências nas linhas 4 e 5, 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 8, 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 11, 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.