Skip to main content

Definir conjuntos y asignaciones

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Crear conjuntos y asignaciones.
  • Describir cómo las listas, los conjuntos y las asignaciones difieren entre sí.
  • Decidir cuándo utilizar un conjunto en vez de una lista.

Siga el proceso con Trail Together

¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este video, parte de la serie Trail Together en Trailhead Live. 

(Este video comienza en el minuto 49:06, en caso de que desee rebobinar y mirar el comienzo del paso nuevamente).

Introducción

Como ya aprendió, una lista es una recopilación ordenada de elementos con el mismo tipo de datos. Cada elemento tiene una posición denominada índice. Esto facilita la recuperación de los elementos de la lista por el índice numerado. Pero las recopilaciones de Apex son más que simplemente listas. Los otros dos tipos de recopilaciones son conjuntos y asignaciones.

Conjuntos

Hasta ahora, creó un tipo de recopilación, una lista. Un conjunto es un conjunto no ordenado de elementos exclusivos del mismo tipo. Del mismo modo que una lista, un conjunto es un grupo de ítems, llamados elementos, y todos los elementos tienen el mismo tipo de datos, como cadena, entero o incluso Cuenta. A diferencia de una lista, un conjunto no mantiene un orden en particular de sus elementos. Debido a que los elementos no están ordenados, un conjunto no puede tener duplicados. Si intenta agregar un elemento que ya está en el conjunto, no recibe un error, pero el nuevo valor no se agrega al conjunto. Recuerde que cuando realiza un bucle por una lista, siempre accede a sus elementos en el orden que los elementos se agregaron a la lista. Cuando realiza un bucle por un conjunto, debido a que los elementos no están ordenados, podría acceder a los elementos en un orden aleatorio.

La declaración de un conjunto es como declarar una lista, pero sustituye la palabra clave List por Set. Creemos un conjunto de cadenas.

Crear un conjunto

  1. En Developer Console, haga clic en File (Archivo) | New (Nuevo) | Apex Class (Clase de Apex).
  2. Ingrese para el nombre de la clase.
  3. Haga clic en Aceptar.
  4. Sustituya el código de la clase Té por el siguiente código:
    public class Tea{
        public static void orderTea(){
            Set<String> teaTypes = new Set <String>();
            teaTypes.add('Black');
            teaTypes.add('White');
            teaTypes.add('Herbal');
            system.debug(teaTypes);
        }
    }
  5. Haga clic en File (Archivo) | Save (Guardar).

Ejecutar el código

  1. Haga clic en Debug (Depurar) | Open Execute Anonymous Window (Abrir ventana de ejecución anónima).
  2. En la ventana Enter Apex Code (Ingresar código de Apex), pegue este código:
              Té.orderTea();
  3. Seleccione Open Log (Abrir registro) y, a continuación, haga clic en Execute (Ejecutar). Se abre Execution Log (Registro de ejecución), mostrando los resultados de la ejecución de su código.
  4. Seleccione Debug Only (Solo depurar) en la parte inferior de la pantalla.

El registro de depuración muestra tres tipos de té: Negro, Blanco y Herbario.

Establecer métodos

Cada tipo de recopilación tiene sus propios métodos. Agregó Negro, Blanco y Herbario a una lista de tipos de tés con el método add comúnmente utilizado. Para aprender más sobre el establecimiento de métodos, consulte la sección Recursos al final de esta unidad.

Agregar un valor duplicado a un conjunto

  1. En la clase Té, sustituya el método orderTea (líneas 2-8) por este código:
    public static void orderTea(){
        Set<String> teaTypes = new Set <String>{'Black', 'White', 'Herbal'};
        system.debug(teaTypes);
        teaTypes.add('Green');
        teaTypes.add('Black');
        system.debug(teaTypes);
    }
  2. Haga clic en File (Archivo) | Save (Guardar).

Ejecutar el código

  1. Ejecute este código: Tea.orderTea();
    Sugerencia: Haga clic en Debug (Depurar) | Execute Last (Ejecutar último) para volver a ejecutar el código que ya ejecutó empleando Execute Anonymous (Ejecución anónima). Esta opción resulta útil cuando realiza cambios en un método y lo vuelve a ejecutar de la misma manera.
  2. Revise el registro de depuración.

La línea 4 muestra teaTypes en el registro, de modo que puede comprobar el contenido del conjunto. Las líneas 6 y 7 agregan Verde y Negro al conjunto. La línea 9 muestra teaTypes en el registro, de modo que puede comprobar el contenido del conjunto de nuevo. ¿Por qué no se agregó Negro al conjunto? 

Recuerde que los conjuntos no permiten valores repetidos. Del mismo modo, tenga en cuenta que no puede indexar un conjunto como lo haría con una lista. Los conjuntos se utilizan normalmente para comprobar si se incluye un valor determinado.

Elección de una lista o un conjunto

Podría estar pensando, “Ahora sé cómo utilizar tanto las listas como los conjuntos. ¿Cómo decido cuál utilizar? Piense en la recopilación que desea crear y hágase estas dos preguntas.

  1. ¿Quiero permitir duplicados?
  2. ¿Es importante el orden de los elementos?

Si responde afirmativamente a al menos una de estas preguntas, utilice una lista. Si responde negativamente a ambas preguntas, utilice un conjunto. 

Aprendió sobre las listas y los conjuntos, pero hay un tipo más de recopilación. Hablemos de las asignaciones a continuación.

Asignaciones

Una asignación es una recopilación más compleja que una lista o un conjunto. Cada elemento de una asignación tiene dos partes: una clave y un valor, conocidos como par clave-valor. Las claves y los valores pueden ser de cualquier tipo de datos. Aunque cada clave es exclusiva, los valores pueden repetirse dentro de una asignación. Imagine una asignación de códigos telefónicos de países. El código de país es la clave y el nombre del país es el valor. Cada código de país es exclusivo, pero los países pueden estar duplicados (porque un país podría tener más de un código de país). 

El método Put

Para agregar pares clave-valor a un mapa, utilice el método put de este modo:

mapName.put (clave, valor);

El método put espera dos parámetros: clave y valor. Creemos una asignación de tipos de té (claves) y sus perfiles de sabores (valores). 

Tipos de té y perfiles de sabores

Tipos de té (Clave)
Perfil de sabor (Valor)
Negro
Terroso
Herbáceo
Dulce
Blanco
Dulce

Crear una asignación

  1. En la clase Té, sustituya el código existente por este código:
    public class Tea{
        public static void orderTea(){
            Map <String, String> teaTypes = new Map <String, String>();
            teaTypes.put('Black', 'Earthy');
            teaTypes.put('White', 'Sweet');
            teaTypes.put('Herbal', 'Sweet');
            system.debug(teaTypes);
        }
    }
  2. Haga clic en File (Archivo) | Save (Guardar).

Ejecutar el código

  1. Ejecute este código: Té.orderTea();
  2. Revise el registro de depuración.

El registro de depuración muestra que la asignación tiene tres pares clave-valor:

Negro=Terroso, Herbáceo=Dulce, Blanco=Dulce

Los valores Terroso y Dulce son los perfiles de sabores. Dulce es el perfil de sabor de dos tipos de té porque se permiten valores duplicados en una asignación.

El método Get

Para acceder a los valores de una asignación, utilice el método get de este modo: 

mapName.get (clave);

Cuando se proporciona una clave existente, el método get devuelve el valor de la clave. Si la clave proporcionada no está asignada a un valor, el método get devuelve nulo. Recuerde que la declaración de la asignación especifica el tipo de datos que espera para un valor devuelto. La variable que devuelve un valor debe ser del mismo tipo de datos que especifica la declaración de la asignación.

Obtener valores de una asignación

  1. En la clase Té, sustituya el método orderTea (líneas 2-8) por este código:
    public static String orderTea(){
        Map <String, String> teaTypes = new Map <String, String>();
        teaTypes.put('Black', 'Earthy');
        teaTypes.put('White', 'Sweet');
        teaTypes.put('Herbal', 'Sweet');
        String flavorProfile = teaTypes.get('Herbal');
        System.debug('The flavorProfile of Herbal is: ' + flavorProfile);
        return flavorProfile;
    }
  2. Haga clic en File (Archivo) | Save (Guardar).

Ejecutar el código

  1. Ejecute este código:  Té.orderTea();
  2. Revise el registro de depuración.

Debido a que la asignación teaTypes está declarada con valores de cadena, el tipo de devolución también debe ser una cadena (flavorProfile).

Ahora conoce los tres tipos de recopilaciones de Apex. 

Tipo de recopilación
Descripción
Lista
Un grupo ordenado de elementos del mismo tipo. Cada elemento tiene un número de índice que representa su posición en la lista.
Conjunto
Un grupo no ordenado de elementos exclusivos del mismo tipo.
Asignación
Una recopilación de pares clave-valor. Cada clave exclusiva se asigna a un único valor.

En módulos más avanzados comenzará a consultar datos dentro de su organización. Una vez se reciban sus datos necesitará lugares para almacenar la información; las recopilaciones resultan útiles para proporcionar almacenamiento temporal. Si desea aprender más sobre las recopilaciones, consulte los vínculos de la Guía del desarrollador de Apex en la sección Recursos. 

Recursos

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios