자료형 - 해시맵

Kurt·2023년 9월 14일
0

[Rust Language]

목록 보기
14/24

개요

자료형의 종류와 사용법 파헤쳐보기 - 해시맵


종류

자료형이라 함은 어떤 종류가 있는지 확인해보기

  1. 벡터
  2. 배열
  3. 튜플
  4. 해시맵
  5. 문자열

해시맵

해시맵은 Key와 Value를 묶어서 관리하는 자료형이라고 한다
장점: Key에 대응하는 Value를 빠르게 찾을 수 있다.

해시맵 구현

Rust에서 해시맵을 구현하기 위해서 HashMap을 이용해서 구현이 가능하다.

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    // 확인
    println!("{:?}", scores);
}

결과: {"Bob": 85, "Charlie": 92, "Alice": 100}

키를 이용하여 값 가져오기

생성되어있는 해시맵에 키를 이용하여 값을 가져오기 위한 과정

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    // Key를 이용하여 값 가져오기
    match scores.get("Alice") {
    	Some(score) => println!("{}", score),
        None => println!("Not Found"),
    }
    
    // 확인
    println!("{:?}", scores);
}

결과:

100
{"Alice": 100, "Bob": 85, "Charlie": 92}

존재하는 Key의 Value 업데이트

이미 존재하는 경우 키의 값 업데이트

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    // 키가 이미 존재하는 경우 업데이트
    scores.insert("Alice", 95);
    
    // 확인
    println!("{:?}", scores);
}

결과: {"Bob": 85, "Alice": 95, "Charlie": 92}

모든 Key-Value 값 조회

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    // 모든 키-값 조회
    for (name, score) in &scores {
        println!("{}: {}", name, score);
    }
    
    // 확인
    println!("{:?}", scores);
}

결과:

Alice: 100
Bob: 85
Charlie: 92
{"Alice": 100, "Bob": 85, "Charlie": 92}

특정 Key:Value 값 제거

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    // Key:Value 삭제
    scores.remove("Bob");
    
    // 확인
    println!("{:?}", scores);
}

결과:{"Alice": 100, "Charlie": 92}

Key가 있는지 확인

존재할 경우

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Bob", 85);
    scores.insert("Charlie", 92);
    
    if scores.contains_key("Bob") {
        println!("Bob's score found");
    } else {
        println!("Bob's score not found");
    }
}

결과:Bob's score found

존재하지 않을 경우

use std::collections::HashMap;

fn main() {
    // HashMap을 생성
    let mut scores = HashMap::new();
    
    // HashMap에 데이터 추가
    scores.insert("Alice", 100);
    scores.insert("Charlie", 92);
    
    if scores.contains_key("Bob") {
        println!("Bob's score found");
    } else {
        println!("Bob's score not found");
    }
}

결과:Bob's score not found


현재 시리즈는 다음 링크를 공부한 내용을 기록하고 있습니다.
> 파이썬 프로그래머를 위한 러스트 입문 - 6.1 자료형 <


profile
내 인생이라는 프로젝트의 최고 버전을 만들기 위해

0개의 댓글