Merge pull request #8750 from Chinwendu20/fnd

fn: Added `HasDuplicates` function to slice
This commit is contained in:
Oliver Gugger 2024-05-21 17:08:05 +02:00 committed by GitHub
commit 68ea8d5312
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 47 additions and 0 deletions

View File

@ -198,3 +198,10 @@ func Sum[B Number](items []B) B {
return a + b
}, 0, items)
}
// HasDuplicates checks if the given slice contains any duplicate elements.
// It returns false if there are no duplicates in the slice (i.e., all elements
// are unique), otherwise returns false.
func HasDuplicates[A comparable](items []A) bool {
return len(NewSet(items...)) != len(items)
}

View File

@ -241,3 +241,43 @@ func TestSliceToMap(t *testing.T) {
})
}
}
// TestHasDuplicates tests the HasDuplicates function.
func TestHasDuplicates(t *testing.T) {
// Define test cases.
testCases := []struct {
name string
items []int
want bool
}{
{
name: "All unique",
items: []int{1, 2, 3, 4, 5},
want: false,
},
{
name: "Some duplicates",
items: []int{1, 2, 2, 3, 4},
want: true,
},
{
name: "No items",
items: []int{},
want: false,
},
{
name: "All duplicates",
items: []int{1, 1, 1, 1},
want: true,
},
}
// Execute each test case.
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
got := HasDuplicates(tc.items)
require.Equal(t, tc.want, got)
})
}
}