> 백엔드 개발 > Golang > Go 슬라이스에서 중복 요소를 효율적으로 제거하는 방법은 무엇입니까?

Go 슬라이스에서 중복 요소를 효율적으로 제거하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-26 21:23:17
원래의
266명이 탐색했습니다.

How to Efficiently Remove Duplicate Elements from a Go Slice?

Go의 슬라이스에서 중복 문자열 또는 정수 제거

문제:
중복된 항목이 포함될 수 있는 학생의 도시. 모든 슬라이스에서 모든 중복 문자열을 제거하는 일반적인 솔루션을 만들고 싶습니다.

비효율적인 솔루션:
현재 솔루션에는 슬라이스의 각 요소가 다른 루프에 있는지 확인하는 작업이 포함됩니다. 이는 큰 조각에는 비효율적입니다.

효율적인 솔루션: 맵 사용
효율적인 솔루션 중복을 제거하는 방법은 맵을 사용하여 고유한 요소를 저장하는 것입니다. 슬라이스를 반복하면서 현재 요소가 맵에 존재하는지 확인하세요. 그렇지 않은 경우 맵과 필터링된 결과에 추가하세요.

일반 솔루션:
다음은 모든 슬라이스에서 중복 항목을 제거하는 일반 함수입니다. 여기서 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
}
로그인 후 복사

문자열 및 문자열을 위한 특정 솔루션 정수:
코드를 단순화하기 위해 문자열과 정수에 대한 특정 함수를 생성할 수도 있습니다:

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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿