Beberapa kaedah deduplikasi peta dalam golang

PHPz
Lepaskan: 2023-04-10 15:47:10
asal
1428 orang telah melayarinya

Bahasa Go ialah bahasa statik yang ditaip kuat, dikenali sebagai "bahasa C era Internet". Dalam pustaka standard bahasa Go, peta ialah struktur data yang sangat biasa digunakan, sering digunakan untuk menyimpan pasangan nilai kunci. Peta boleh dibuat menggunakan fungsi make dan menyediakan kaedah operasi yang kaya. Walau bagaimanapun, apabila bilangan elemen dalam peta bertambah, memori yang diduduki olehnya akan menjadi lebih besar dan lebih besar Jika tidak dikawal, ia boleh menyebabkan penggunaan memori program menjadi terlalu tinggi. Artikel ini akan memperkenalkan beberapa kaedah untuk melaksanakan deduplikasi peta golang untuk membantu anda mengawal memori program dengan lebih baik.

Kaedah 1: Melintasi dan mengira

Untuk memadamkan elemen yang ditentukan dalam peta, anda perlu menggunakan fungsi padam terbina dalam. Walau bagaimanapun, untuk situasi di mana semua elemen dalam peta perlu dinyahduplikasi, kita boleh mencapai nyahduplikasi peta dengan merentasi peta dan mengira bilangan elemen.

Proses khusus adalah seperti berikut:

  1. Tentukan peta jenis map[string]int;
  2. Lintas peta asal dan kira bilangan kejadian setiap elemen;
  3. Bina peta baharu dan letakkan elemen dengan 1 kejadian ke dalam peta;
  4. Kembalikan peta baharu.

Kod sampel adalah seperti berikut:

func removeDuplicate(m map[string]string) map[string]string {
    counts := make(map[string]int)
    for _, v := range m {
        counts[v] += 1
    }
    res := make(map[string]string)
    for k, v := range m {
        if counts[v] == 1 {
            res[k] = v
        }
    }
    return res
}
Salin selepas log masuk

Kaedah 2: Gunakan slice sebagai storan tambahan

Satu lagi kaedah penyahduplikasian peta golang ialah menggunakan slice as storan simpanan tambahan. Prosesnya adalah seperti berikut:

  1. Tentukan peta jenis peta[string]bool
  2. Lintas peta asal dan simpan semua pasangan nilai kunci dalam peta ke dalam peta tambahan; ;
  3. Bina kepingan baharu dan simpan semua kunci dalam peta tambahan ke dalam kepingan
  4. Kembalikan kepingan baharu.

Kod sampel adalah seperti berikut:

func removeDuplicate(m map[string]string) []string {
    res := make([]string, 0, len(m))
    temp := make(map[string]bool)
    for _, v := range m {
        if _, ok := temp[v]; !ok {
            temp[v] = true
            res = append(res, v)
        }
    }
    return res
}
Salin selepas log masuk

Kaedah 3: Gunakan struct untuk menapis

Menggunakan struct untuk menapis juga merupakan salah satu cara untuk mencapai deduplikasi peta. Langkah-langkah khusus adalah seperti berikut:

  1. Takrifkan struct, setiap elemen mengandungi dua kunci atribut dan nilai; 🎜>Lintas peta asal, gunakan nilai elemen sebagai kunci dan bina struct [rentetan] peta baharu
  2. Kembalikan peta baharu.
  3. Kod sampel adalah seperti berikut:
Ringkasan

Di atas adalah tiga kaedah untuk melaksanakan penyahduplikasian peta golang iaitu merentas dan mengira, menggunakan slice sebagai Penyimpanan tambahan dan penapisan menggunakan struct. Apabila menggunakan peta, beri perhatian untuk mengawal bilangan elemen untuk mengelakkan penggunaan memori yang berlebihan dan menjejaskan prestasi program. Semoga artikel ini bermanfaat kepada anda.
func removeDuplicate(m map[string]string) map[string]struct{} {
    res := make(map[string]struct{}, len(m))
    for _, v := range m {
        res[v] = struct{}{}
    }
    return res
}
Salin selepas log masuk

Atas ialah kandungan terperinci Beberapa kaedah deduplikasi peta dalam golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!