Definir conjuntos y mapas
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Crear conjuntos y mapas.
- Describir cómo difieren las listas, los conjuntos y los mapas.
- Decidir cuándo usar un conjunto en lugar 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 vÃdeo, parte de la serie Trail Together en Trailhead Live.
(Este clip comienza en la marca del minuto 49:06, en caso de que desee retroceder y volver a ver el principio del paso).
Introducción
Como ya ha aprendido, una lista es una colección ordenada de elementos con los mismos tipos de datos. Cada elemento tiene una posición llamada Ãndice. Esto facilita la recuperación de elementos en la lista mediante el Ãndice numerado. Pero las colecciones de Apex son más que solo listas. Los otros dos tipos de colecciones son los conjuntos y los mapas.
Conjuntos
Hasta ahora, ha creado un tipo de colección, una lista. Un conjunto es un set no ordenado de elementos únicos del mismo tipo. Como una lista, un conjunto es un grupo de elementos, y todos ellos tienen los mismos tipos de datos, como cadena, entero o incluso Account. A diferencia de una lista, un conjunto no mantiene un orden concreto para sus elementos. Debido a que los elementos no están ordenados, un conjunto no puede tener duplicados. Si intenta añadir un elemento que ya está en el conjunto, no recibirá un error, pero el nuevo valor no se añadirá al conjunto. Recuerde que, cuando recorre una lista, siempre accede a sus elementos en el orden en que se añadieron. Cuando recorre un conjunto, debido a que los elementos no están ordenados, puede acceder a ellos en un orden aleatorio.
Declarar un conjunto es similar a declarar una lista, pero se sustituye la palabra clave Set
(Conjunto) por List
(Lista). Creemos un conjunto de cadenas.
Crear un conjunto
- En Developer Console, haga clic en File | New | Apex Class (Archivo | Nuevo | Clase de Apex).
- Introduzca Té como el nombre de la clase.
- Haga clic en OK (Aceptar).
- Reemplace el código en la clase Té con este código:
- Haga clic en File | Save (Archivo | Guardar).
Ejecutar el código
- Haga clic en Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
- En la ventana Enter Apex Code (Introducir código Apex), pegue este código:
Tea.orderTea();
- Seleccione Open log (Abrir registro) y luego haga clic en Execute (Ejecutar). Se abre el registro de ejecución, que muestra los resultados de la ejecución de su código.
- Seleccione Debug Only (Solo depurar) en la parte inferior de la ventana.
El registro de depuración muestra los tres tipos de té: Negro, Blanco y De hierbas.
Métodos de conjunto
Cada tipo de colección tiene sus propios métodos. Ha añadido Negro, Blanco y De hierbas a una lista de tipos de té con el método comúnmente utilizado add
(agregar). Para conocer más detalles sobre los métodos de conjunto, consulte los recursos al final de esta unidad.
Añadir un valor duplicado a un conjunto
- En la clase Té, reemplace el método orderTea (lÃneas 2-8) con este código:
- Haga clic en File | Save (Archivo | Guardar).
Ejecutar el código
- Ejecute este código:
Tea.orderTea();
Consejo: Haga clic en Debug | Execute Last (Depurar | Ejecutar último) para volver a ejecutar el código previo utilizando Execute Anonymous (Ejecución anónima). Esta opción es práctica cuando realiza cambios en un método y lo vuelve a ejecutar de la misma manera. - Revise el registro de depuración.
La lÃnea 4 muestra teaTypes
en el registro para que pueda verificar el contenido del conjunto. Las lÃneas 6 y 7 añaden Verde y Negro al conjunto. La lÃnea 9 muestra teaTypes
en el registro para que pueda volver a verificar el contenido del conjunto. ¿Por qué no se ha añadido Negro al conjunto?
Recuerde que los conjuntos no permiten valores repetidos. Además, tenga en cuenta que no puede acceder a un conjunto como lo harÃa con una lista. Los conjuntos se utilizan tÃpicamente para verificar si un cierto valor está incluido.
Elegir una lista o un conjunto
Puede que esté pensando: "Ya sé cómo usar tanto listas como conjuntos. ¿Cómo decido cuál usar?". Piense en la colección que desea crear y hágase estas dos preguntas.
- ¿Quiero permitir duplicados?
- ¿Es importante el orden de los elementos?
Si responde sà a alguna de estas preguntas, use una lista. Si responde no a ambas preguntas, use un conjunto.
Ha aprendido sobre listas y conjuntos, pero hay otro tipo más de colección. Ahora hablemos sobre los mapas.
Mapas
Un mapa es una colección más compleja que una lista o un conjunto. Cada elemento en un mapa tiene dos partes: una clave y un valor, conocidos como un par clave-valor. Las claves y los valores pueden ser de cualquier tipo de dato. Aunque cada clave es única, los valores pueden repetirse dentro de un mapa. Imagine un mapa de códigos de paÃs telefónicos. 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 único, pero los paÃses pueden duplicarse (ya que un paÃs puede tener más de un código de paÃs).
El método put
Para añadir pares clave-valor a un mapa, utilice el método put
(poner), de la siguiente manera:
El método put
(poner) requiere dos parámetros: clave y valor. Vamos a crear un mapa de tipos de té (claves) y sus perfiles de sabor (valores).
Tipos de té y perfiles de sabor
Tipos de té (clave) |
Perfiles de sabor (valor) |
Negro |
Terroso |
De hierbas |
Dulce |
Blanco |
Dulce |
Crear un mapa
- En la clase Té, reemplace el código existente con este código:
- Haga clic en File | Save (Archivo | Guardar).
Ejecutar el código
- Ejecute este código:
Tea.orderTea();
- Revise el registro de depuración.
El registro de depuración muestra que el mapa tiene tres pares clave-valor:
Black=Earthy
(Negro=Terroso), Herbal=Sweet
(Herbario=Dulce), White=Sweet
(Blanco=Dulce)
Los valores Earthy (terroso) y Sweet (dulce) son los perfiles de sabor. Sweet es el perfil de sabor para dos tipos de té porque los valores duplicados se permiten en un mapa.
El método get
Para acceder a los valores en un mapa, utilice el método get
(obtener), de la siguiente manera:
Cuando se le proporciona una clave existente, el método get
(obtener) devuelve el valor asociado a esa clave. Si la clave proporcionada no está asociada a un valor, el método get
(obtener) devuelve null. Recuerde que la declaración del mapa especifica el tipo de dato que espera como valor de retorno. La variable que devuelve un valor debe ser del mismo tipo de dato que especifica la declaración del mapa.
Obtener valores de un mapa
- En la clase Té, reemplace el método orderTea (lÃneas 2-8) con este código:
- Haga clic en File | Save (Archivo | Guardar).
Ejecutar el código
- Ejecute este código:
Tea.orderTea();
- Revise el registro de depuración.
Debido a que el mapa teaTypes
está declarado con valores de tipo cadena, el tipo de retorno también debe ser una cadena (flavorProfile
).
Ahora ya conoce los tres tipos de colecciones de Apex.
Tipo de colecció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 únicos del mismo tipo. |
Mapa |
Una colección de pares clave-valor. Cada clave única se asigna a un solo valor. |
En módulos más avanzados, comienza a consultar datos dentro de su organización. Una vez que recibe los datos, necesita lugares para almacenar la información; las colecciones son útiles para proporcionar almacenamiento temporal. Si desea aprender más sobre colecciones, consulte los enlaces de la GuÃa del desarrollador de Apex en la sección de Recursos.
Recursos
- GuÃa del desarrollador de Apex: Métodos de conjunto en Apex
- GuÃa del desarrollador de Apex: Mapas
- GuÃa del desarrollador de Apex: Métodos de mapa en Apex