0Pricing
Learn Rust Coding · Lección

Crear un HashMap

Inserte y busque por clave

Crear un HashMap es una lección gratuita de Learn Rust Coding en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn Rust Coding, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Qué es un HashMap?

Un HashMap almacena datos como pares clave-valor. Las búsquedas se realizan mediante una clave, en lugar de un índice.

Piense en una agenda telefónica: un nombre (clave) se relaciona con un número (valor). Los HashMap son perfectos cuando necesita búsquedas rápidas mediante una clave significativa.

Importar HashMap

A diferencia de Vec y String, HashMap no forma parte del preludio. Debe incorporarlo al ámbito.

Añada una línea use al principio del archivo. Esto hace que el nombre esté disponible en todo el módulo.

use std::collections::HashMap;

fn main() {
    let scores: HashMap<String, i32> = HashMap::new();
    println!("empty map len: {}", scores.len());
}

Insertar pares

Use insert para añadir una clave y su valor. Si la clave ya existe, se reemplaza el valor anterior.

El mapa debe declararse como mut para permitir inserciones.

use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();
    scores.insert("Alice", 50);
    scores.insert("Bob", 30);
    println!("{} players", scores.len());
}

Inferencia de tipos

Rara vez necesita escribir el tipo. Rust infiere HashMap<&str, i32> a partir de las primeras llamadas a insert.

Aquí, las claves son slices de cadenas y los valores son enteros; todo se determina por el uso.

use std::collections::HashMap;

fn main() {
    let mut ages = HashMap::new();
    ages.insert("Sam", 28);
    ages.insert("Mia", 34);
    println!("Sam is {}", ages["Sam"]);
}

Obtener valores

El método get devuelve un Option. Obtendrá Some(&value) si la clave existe o None si no existe.

Esto le obliga a gestionar de forma segura el caso en que falte la clave.

use std::collections::HashMap;

fn main() {
    let mut scores = HashMap::new();
    scores.insert("Alice", 50);
    match scores.get("Alice") {
        Some(v) => println!("score: {}", v),
        None => println!("no score"),
    }
}

Indexación frente a get

Puede indexar con map[key], pero provoca un pánico si falta la clave.

Prefiera get cuando una clave pueda no existir. Use la indexación únicamente cuando tenga la certeza de que la clave está presente.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("x", 1);
    // m["y"] would panic!
    let v = m.get("y").copied().unwrap_or(0);
    println!("y = {}", v);
}

Actualizar un valor

Al llamar a insert con una clave existente, se sobrescribe el valor anterior.

Se devuelve el valor anterior, envuelto en Option, para que pueda inspeccionarlo si lo desea.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("k", 1);
    let old = m.insert("k", 9);
    println!("old = {:?}, now = {}", old, m["k"]);
}

Comprobar claves

Use contains_key para comprobar si existe una clave sin recuperar su valor.

Devuelve un bool simple, lo que resulta práctico en condiciones if.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("on", true);
    if m.contains_key("on") {
        println!("key exists");
    }
}

Eliminar entradas

El método remove elimina una clave y devuelve su valor como un Option.

Si la clave no estaba presente, obtiene None, por lo que la eliminación siempre es segura.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("a", 1);
    let removed = m.remove("a");
    println!("removed {:?}, len {}", removed, m.len());
}

Iterar sobre un mapa

Un bucle for sobre un HashMap produce tuplas (key, value) por referencia.

Tenga en cuenta que el orden no está definido y puede cambiar entre ejecuciones, ya que el hashing altera la ubicación de los elementos.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    m.insert("a", 1);
    m.insert("b", 2);
    for (k, v) in &m {
        println!("{} -> {}", k, v);
    }
}

Propiedad de las claves

Cuando inserta valores poseídos, como un String, el mapa asume su propiedad.

Después de insertarla, no puede volver a usar esa variable a menos que la haya clonado antes.

use std::collections::HashMap;

fn main() {
    let mut m = HashMap::new();
    let name = String::from("Alice");
    m.insert(name, 50);
    // name is moved here; m owns it now
    println!("{}", m["Alice"]);
}

Comprobación rápida

Necesita un valor, pero es posible que falte la clave.

Resumen

Aprendió a crear un HashMap, insertar pares y buscar valores con get o mediante indexación.

También vio contains_key, remove, la iteración y cómo el mapa asume la propiedad de las claves insertadas.

Preguntas frecuentes

¿La lección «Crear un HashMap» es gratis?

Sí — el texto completo de «Crear un HashMap» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn Rust Coding, actualiza a CoddyKit PRO. El curso de Learn Rust Coding incluye 4 lecciones en total.

¿Qué aprenderé en «Crear un HashMap»?

Inserte y busque por clave Practicas Learn Rust Coding con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn Rust Coding?

No se requiere experiencia previa. Learn Rust Coding en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Crear un HashMap»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn Rust Coding?

Sí. Cada lección de Learn Rust Coding incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Crear un HashMap
  2. Entry API y valores predeterminados
  3. Trabajar con HashSet
  4. Contar y agrupar
← Volver a Learn Rust Coding