Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengeluarkan Elemen Pendua dengan Cekap daripada Go Slice?

Bagaimana untuk Mengeluarkan Elemen Pendua dengan Cekap daripada Go Slice?

Barbara Streisand
Lepaskan: 2024-12-26 21:23:17
asal
266 orang telah melayarinya

How to Efficiently Remove Duplicate Elements from a Go Slice?

Mengalih keluar Rentetan Pendua atau Integer daripada Slice dalam Go

Masalah:
Anda mempunyai sekeping bandar pelajar yang mungkin mengandungi entri pendua. Anda ingin mencipta penyelesaian generik untuk mengalih keluar semua rentetan pendua daripada mana-mana kepingan.

Penyelesaian Tidak Cekap:
Penyelesaian semasa anda melibatkan menyemak setiap elemen dalam kepingan untuk kewujudan dalam gelung lain, yang tidak cekap untuk kepingan besar.

Penyelesaian Cekap: Menggunakan Peta
Cara yang cekap untuk mengalih keluar pendua ialah menggunakan peta untuk menyimpan elemen unik. Semasa anda mengulangi hirisan, semak sama ada unsur semasa wujud dalam peta. Jika tidak, tambahkannya pada peta dan hasil yang ditapis.

Penyelesaian Generik:
Berikut ialah fungsi generik untuk mengalih keluar pendua daripada mana-mana kepingan, dengan T boleh menjadi mana-mana jenis yang setanding:

func removeDuplicate[T comparable](sliceList []T) []T {
    allKeys := make(map[T]bool)
    list := []T{}
    for _, item := range sliceList {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
Salin selepas log masuk

Penyelesaian Khusus untuk Rentetan dan Integer:
Untuk memudahkan kod anda, anda juga boleh mencipta fungsi khusus untuk rentetan dan integer:

func removeDuplicateStr(strSlice []string) []string {
    // [Remove duplicate code here]
}

func removeDuplicateInt(intSlice []int) []int {
    // [Remove duplicate code here]
}
Salin selepas log masuk

Contoh Penggunaan:

studentsCities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}

uniqueStudentsCities := removeDuplicate(studentsCities)
fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]
Salin selepas log masuk

Menggunakan pendekatan ini, anda boleh mengalih keluar pendua dengan berkesan daripada mana-mana kepingan, tanpa mengira jenisnya.

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Elemen Pendua dengan Cekap daripada Go Slice?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan