Rust - 벡터를 HashSet으로 변환

러스트에서 Vector를 HashSet으로 변환하는 방법을 소개합니다.

1. collect()를 이용한 방법

vector의 Iterator를 가져와서 collect()로 HashSet으로 변환할 수 있습니다.

use std::collections::HashSet;

fn main() {
    let vec = vec![1, 2, 3, 4, 5, 6];
    let set: HashSet<_> = vec.iter().collect::<HashSet<_>>();
    println!("vec: {:?}", vec);
    println!("hashset: {:?}", set);
}

Output:

vec: [1, 2, 3, 4, 5, 6]
hashset: {1, 3, 5, 6, 4, 2}

collect()를 사용할 때, 변수나 collect 중에 한쪽만 타입을 입력하고 나머지는 생략해도 됩니다. 아래 두가지 방법 모두 사용 가능합니다.

let set = vec.iter().collect::<HashSet<_>>();

let set: HashSet<_> = vec.iter().collect();

2. HashSet::from_iter()를 이용한 방법

HashSet::from_iter()는 인자로 전달된 Iterator의 값들을 HashSet에 추가합니다.

아래와 같이 vector를 HashSet으로 변환할 수 있습니다.

use std::collections::HashSet;

fn main() {
    let vec = vec![1, 2, 3, 4, 5, 6];
    let set: HashSet<_> = HashSet::from_iter(vec.iter());
    println!("vec: {:?}", vec);
    println!("hashset: {:?}", set);
}

Output:

vec: [1, 2, 3, 4, 5, 6]
hashset: {5, 6, 3, 2, 1, 4}

3. extend()를 이용한 방법

비어있는 HashSet을 먼저 생성하고, extend(iter)로 Iterator의 요소들을 HashSet에 모두 추가할 수 있습니다.

use std::collections::HashSet;

fn main() {
    let vec = vec![1, 2, 3, 4, 5, 6];
    let mut set: HashSet<i32> = HashSet::new();
    set.extend(vec.iter());
    println!("vec: {:?}", vec);
    println!("hashset: {:?}", set);
}

Output:

vec: [1, 2, 3, 4, 5, 6]
hashset: {1, 5, 2, 6, 3, 4}
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha