Heim  >  Artikel  >  Backend-Entwicklung  >  So entfernen Sie Duplikate aus Slices in Golang

So entfernen Sie Duplikate aus Slices in Golang

(*-*)浩
(*-*)浩Original
2019-12-28 09:55:533777Durchsuche

So entfernen Sie Duplikate aus Slices in Golang

Zwei Ganzzahl-Slices zusammenführen und ein Slice ohne doppelte Elemente zurückgeben. Es gibt zwei Deduplizierungsstrategien

1 Filtern Sie doppelte Elemente (Zeit wird gegen Raum ausgetauscht) (empfohlenes Lernen: go)

// 通过两重循环过滤重复元素
func RemoveRepByLoop(slc []int) []int {
    result := []int{}  // 存放结果
    for i := range slc{
        flag := true
        for j := range result{
            if slc[i] == result[j] {
                flag = false  // 存在重复元素,标识为false
                break
            }
        }
        if flag {  // 标识为false,不添加进结果
            result = append(result, slc[i])
        }
    }
    return result
}

2. Durch Wörterbuch filtern (Raum wird gegen Zeit ausgetauscht)

Da der Primärschlüssel des Wörterbuchs eindeutig ist, kann er verwendet werden, um zu bestimmen, ob Elemente wiederholt werden.

// 通过map主键唯一的特性过滤重复元素
func RemoveRepByMap(slc []int) []int {
    result := []int{}
    tempMap := map[int]byte{}  // 存放不重复主键
    for _, e := range slc{
        l := len(tempMap)
        tempMap[e] = 0
        if len(tempMap) != l{  // 加入map后,map长度变化,则元素不重复
            result = append(result, e)
        }
    }
    return result
}

ps: Um Speicher zu sparen, wird hier map[int]byte verwendet. Da der Wert von „map“ nicht verwendet wird, kann jeder Typ verwendet werden.

Das obige ist der detaillierte Inhalt vonSo entfernen Sie Duplikate aus Slices in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn