> 백엔드 개발 > Golang > Go 슬라이스에서 중복 요소를 효율적으로 제거하려면 어떻게 해야 합니까?

Go 슬라이스에서 중복 요소를 효율적으로 제거하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-12-16 17:04:14
원래의
176명이 탐색했습니다.

How Can I Efficiently Remove Duplicate Elements from Go Slices?

Go Slice에서 중복 제거 최적화

소개

중복 요소가 포함된 데이터 세트와의 만남은 다음과 같습니다. 특히 광범위한 데이터 수집과 관련된 시나리오에서는 일반적입니다. 고유한 값을 얻기 위해 이러한 중복 항목을 제거하는 것은 다양한 작업에 매우 중요합니다. Go에서는 이를 달성하려면 시간과 공간의 복잡성을 최소화하는 효율적인 알고리즘이 필요합니다. 이 기사에서는 문자열 또는 정수 조각에서 중복 항목을 제거하기 위한 포괄적인 솔루션을 살펴봅니다.

일반 구현

첫 번째 접근 방식은 Go v1.18 이상에서 사용할 수 있는 일반 기능을 활용합니다. , 비교 가능한 모든 유형(T)의 슬라이스를 처리합니다. 맵을 활용하여 발견된 값을 추적하여 결과 조각에 고유한 요소만 추가되도록 합니다.

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
}
로그인 후 복사

문자열별 최적화

다음만 포함하는 조각의 경우 문자열에는 make 함수를 사용하여 더 최적화된 솔루션이 있습니다. 입력 슬라이스의 크기로 맵을 초기화하므로 동적 크기 조정 및 잠재적인 성능 저하가 필요하지 않습니다.

func removeDuplicateStr(strSlice []string) []string {
    allKeys := make(map[string]bool, len(strSlice))
    list := []string{}
    for _, item := range strSlice {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
로그인 후 복사

정수별 최적화

와 유사 문자열 특정 접근 방식인 정수 조각에 대한 특수 함수는 make 함수를 활용하여 성능을 향상할 수 있습니다.

func removeDuplicateInt(intSlice []int) []int {
    allKeys := make(map[int]bool, len(intSlice))
    list := []int{}
    for _, item := range intSlice {
        if _, value := allKeys[item]; !value {
            allKeys[item] = true
            list = append(list, item)
        }
    }
    return list
}
로그인 후 복사

사용법

슬라이스 유형에 관계없이 이러한 기능의 사용법은 간단합니다. 입력 슬라이스를 인수로 전달하기만 하면 고유한 요소만 포함된 슬라이스를 받게 됩니다.

cities := []string{"Mumbai", "Delhi", "Ahmedabad", "Mumbai", "Bangalore", "Delhi", "Kolkata", "Pune"}
uniqueCities := removeDuplicate(cities)

fmt.Println(uniqueCities) // [Mumbai Delhi Ahmedabad Bangalore Kolkata Pune]
로그인 후 복사

위 내용은 Go 슬라이스에서 중복 요소를 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿