0Pricing
Learn Rust Coding · Ders

HashSet ile Çalışma

Benzersiz değerleri izleyin.

HashSet ile Çalışma, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

HashSet Nedir?

Bir HashSet, benzersiz değerlerden oluşan bir koleksiyon depolar. Yinelenen değerler ve anahtarlar yoktur; yalnızca üyeler vardır.

Tek bir soruyu hızlıca yanıtlamak için harikadır: "bu değeri daha önce gördüm mü?"

Küme Oluşturma

HashMap gibi HashSet de std::collections içinde yer alır ve bir use içe aktarması gerektirir.

HashSet::new() ile boş bir tane oluşturun ve öğe eklemek için onu mut olarak bildirin.

use std::collections::HashSet;

fn main() {
    let mut s: HashSet<i32> = HashSet::new();
    s.insert(1);
    s.insert(2);
    println!("size: {}", s.len());
}

Ekleme ve Yinelenen Değerler

insert yöntemi bir bool döndürür: değer yeniyse true, zaten mevcutsa false.

Yinelenen bir değer eklemek hiçbir şey yapmaz; böylece küme otomatik olarak benzersiz kalır.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    println!("{}", s.insert(5));
    println!("{}", s.insert(5));
    println!("len = {}", s.len());
}

Üyelik Denetimleri

Bir değerin kümede olup olmadığını denetlemek için contains kullanın. Bu yöntem bir bool döndürür.

Bir kümeyi kullanmanın en yaygın nedeni budur: hızlı ve anlaşılır aramalar.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert("red");
    s.insert("blue");
    println!("has red? {}", s.contains("red"));
    println!("has green? {}", s.contains("green"));
}

Üyeleri Kaldırma

remove yöntemi bir değer alır ve değer mevcut olup kaldırıldıysa true döndürür.

Mevcut olmayan bir şeyi kaldırmak yalnızca false döndürür.

use std::collections::HashSet;

fn main() {
    let mut s = HashSet::new();
    s.insert(7);
    println!("{}", s.remove(&7));
    println!("{}", s.remove(&7));
}

Bir Yineleyiciden Oluşturma

Değerlerden oluşan herhangi bir yineleyiciyi doğrudan bir HashSet içine toplayabilirsiniz.

Bu, yinelenen değerleri ayıklamanın hızlı bir yoludur: tekrarlar içeren bir liste verin, küme her değeri bir kez tutar.

use std::collections::HashSet;

fn main() {
    let nums = [1, 2, 2, 3, 3, 3];
    let unique: HashSet<i32> = nums.iter().copied().collect();
    println!("distinct: {}", unique.len());
}

Küme Üzerinde Yineleme

Her üyeyi ziyaret etmek için bir for döngüsüyle küme üzerinde yineleme yapın.

HashMap'te olduğu gibi yineleme sırası garanti edilmez ve her çalıştırmada değişebilir.

use std::collections::HashSet;

fn main() {
    let s: HashSet<i32> = [10, 20, 30].into_iter().collect();
    let mut total = 0;
    for v in &s {
        total += v;
    }
    println!("sum = {}", total);
}

Birleşim

union yöntemi, iki kümeden en az birinde bulunan her değeri verir.

Bir yineleyici döndürür; bu nedenle onu yeni bir kümeye toplayabilir veya üzerinde döngü kurabilirsiniz.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [3, 4].into_iter().collect();
    let u: HashSet<i32> = a.union(&b).copied().collect();
    println!("union size: {}", u.len());
}

Kesişim

intersection yöntemi, her iki kümede bulunan değerleri verir.

Paylaşılan etiketler veya ortak arkadaşlar gibi ortak öğeleri bulmak için idealdir.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2, 3, 4].into_iter().collect();
    let common: Vec<i32> = a.intersection(&b).copied().collect();
    println!("common count: {}", common.len());
}

Fark

difference yöntemi, ilk kümede bulunup ikinci kümede bulunmayan değerleri verir.

Ters farkı elde etmek için sırayı değiştirin. Yalnızca bir kümede bulunan öğeler için symmetric_difference da vardır.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2, 3].into_iter().collect();
    let b: HashSet<i32> = [2].into_iter().collect();
    let only_a: Vec<i32> = a.difference(&b).copied().collect();
    println!("only in a: {}", only_a.len());
}

Alt Küme ve Ayrıklık

Bir kümenin her üyesinin başka bir kümede bulunup bulunmadığını denetlemek için is_subset kullanın.

İki kümenin hiçbir ortak değeri olmadığını denetlemek için is_disjoint kullanın. İkisi de düz bir bool döndürür.

use std::collections::HashSet;

fn main() {
    let a: HashSet<i32> = [1, 2].into_iter().collect();
    let b: HashSet<i32> = [1, 2, 3].into_iter().collect();
    println!("a subset of b? {}", a.is_subset(&b));
}

Hızlı Kontrol

Aynı değeri bir HashSet içine iki kez eklersiniz.

Özet

Bir HashSet, hızlı contains denetimleriyle benzersiz değerleri tutar.

Değerler eklediniz, kaldırdınız, collect ile yinelenenleri ayıkladınız ve kümeleri union, intersection ve difference ile birleştirdiniz.

Sıkça Sorulan Sorular

“HashSet ile Çalışma” dersi ücretsiz mi?

Evet — “HashSet ile Çalışma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“HashSet ile Çalışma” dersinde ne öğreneceğim?

Benzersiz değerleri izleyin. Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“HashSet ile Çalışma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. HashMap Oluşturma
  2. Entry API'si ve Varsayılanlar
  3. HashSet ile Çalışma
  4. Sayma ve Gruplama
← Learn Rust Coding Sayfasına Dön