首頁 > 後端開發 > Golang > 如何高效率去除Go切片中的重複元素?

如何高效率去除Go切片中的重複元素?

Barbara Streisand
發布: 2024-12-26 21:23:17
原創
266 人瀏覽過

How to Efficiently Remove Duplicate Elements from a Go Slice?

從Go 中的切片中刪除重複的字串或整數

問題:

問題:你有一個切片可能包含重複條目的學生城市。您想要建立一個通用解決方案來刪除任何切片中的所有重複字串。

效率低下的解決方案:您目前的解決方案涉及檢查切片中的每個元素是否存在於另一個循環中,這對於大切片來說效率很低。

有效的解決方案:使用地圖一種有效的方法刪除重複項就是使用映射來儲存唯一元素。當您迭代切片時,檢查目前元素是否存在於地圖中。如果沒有,請將其新增至地圖和過濾結果。

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
}
登入後複製
通用解決方案:

這是一個從任何切片中刪除重複項的通用函數,其中 T 可以是任何可比較的類型:

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

func removeDuplicateInt(intSlice []int) []int {
    // [Remove duplicate code here]
}
登入後複製
字串和的具體解決方案整數:

為了簡化程式碼,您也可以為字串和整數建立特定函數:

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

uniqueStudentsCities := removeDuplicate(studentsCities)
fmt.Println(uniqueStudentsCities) // Output: ["Mumbai", "Delhi", "Ahmedabad", "Bangalore", "Kolkata", "Pune"]
登入後複製

用法範例:

使用此方法,您可以有效地從任何切片中刪除重複項,無論其類型為何。

以上是如何高效率去除Go切片中的重複元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板