1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/didiopensource-collection

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 30 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 22:58 014945c
NewIntCollection([]int{1, 2})
    intColl2 := intColl.Copy()
    intColl2.DD()
    if intColl2.Count() != 2 {
        t.Fatal("Copy失败")
    }
    if reflect.TypeOf(intColl2) != reflect.TypeOf(intColl) {
        t.Fatal("Copy类型失败")
    }
}

Contain

Contains(obj interface{}) bool

Определяет, присутствует ли элемент в коллекции. Необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{1, 2, 2, 3})
if intColl.Contains(1) != true {
    t.Fatal("contain 错误1")
}
if intColl.Contains(5) != false {
    t.Fatal("contain 错误2")
}

Diff

Diff(arr ICollection) ICollection

Возвращает элементы из первой коллекции, которых нет во второй. Необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{1, 2, 2, 3})
intColl2 := NewIntCollection([]int{2, 3, 4})

diff := intColl.Diff(intColl2)
diff.DD()
if diff.Count() != 1 {
    t.Fatal("diff 错误")
}

/*
IntCollection(1):{
    0:  1
}
*/

DD

DD()

Метод DD отображает коллекцию в удобном формате.

a1 := Foo{A: "a1"}
a2 := Foo{A: "a2"}

objColl := NewObjCollection([]Foo{a1, a2})
objColl.DD()

/*
ObjCollection(2)(collection.Foo):{
    0:  {A:a1}
    1:  {A:a2}
}
*/

intColl := NewIntCollection([]int{1,2})
intColl.DD()

/*
IntCollection(2):{
    0:  1
    1:  2
}
*/

Each

Each(func(item interface{}, key int))

Вызывает заданную функцию для каждого элемента коллекции. Если необходимо прервать цикл, можно установить ошибку в коллекции.

intColl := NewIntCollection([]int{1, 2, 3, 4})
sum := 0
intColl.Each(func(item interface{}, key int) {
    v := item.(int)
    sum = sum + v
})

if intColl.Err() != nil {
    t.Fatal(intColl.Err())
}

if sum != 10 {
    t.Fatal("Each 错误")
}

sum = 0
intColl.Each(func(item interface{}, key int) {
    v := item.(int)
    sum = sum + v
    if sum > 4 {
        intColl.SetErr(errors.New("stop the cycle"))
        return
    }
})

if sum != 6 {
    t.Fatal("Each 错误")
}

/*
PASS
*/

Every

Every(func(item interface{}, key int) bool) bool

Проверяет, все ли элементы коллекции соответствуют заданному условию. Возвращает true, если все элементы подходят, и false в противном случае.

intColl := NewIntCollection([]int{1, 2, 3, 4})
if intColl.Every(func(item interface{}, key int) bool {
    i := item.(int)
    return i > 1
}) != false {
    t.Fatal("Every错误")
}

if intColl.Every(func(item interface{}, key int) bool {
    i := item.(int)
    return i > 0
}) != true {
    t.Fatal("Every错误")
}

ForPage

ForPage(page int, perPage int) ICollection

Разделяет коллекцию на страницы по заданному количеству элементов на странице.

intColl := NewIntCollection([]int{1, 2, 3, 4, 5, 6})
ret := intColl.ForPage(1, 2)
ret.DD()

if ret.Count() != 2 {
    t.Fatal("For page错误")
}

/*
IntCollection(2):{
    0:  3
    1:  4
}
*/

Filter

Filter(func(item interface{}, key int) bool) ICollection

Получает элементы коллекции, соответствующие заданной функции фильтрации.

intColl := NewIntCollection([]int{1, 2, 2, 3})
intColl.Filter(func(obj interface{}, index int) bool {
    val := obj.(int)
    if val == 2 {
        return true
    }
    return false
}).DD()

/*
IntCollection(2):{
    0:  2
    1:  2
}
*/

First

First(...func(item interface{}, key int) bool) IMix

Получает первый элемент коллекции, соответствующий заданной функции фильтрации (если она указана).

intColl := NewIntCollection([]int{1, 2, 2, 3})
intColl.First(func(obj interface{}, index int) bool {
    val := obj.(int)
    if val > 2 {
        return true
    }
    return false
}).DD()

/*
IMix(int): 3 
*/
func TestIntCollection_Filter(t *testing.T) {
    intColl := NewIntCollection([]int{1,2,3})
    a, err := intColl.First().ToInt()
    if err != nil {
        t.Fatal(err)
    }
    if !reflect.DeepEqual(a, 1) {
        t.Fatal("filter error")
    }
}

Index

Index(i int) IMix

Получает элемент коллекции с заданным индексом (отсчёт начинается с нуля).

intColl := NewIntCollection([]int{1,2})
foo := intColl.Index(1)
foo.DD()

/*
IMix(int): 2 
*/

IsEmpty

IsEmpty() bool

Проверяет, пуста ли коллекция. Возвращает true, если коллекция пуста, и false иначе.

intColl := NewIntCollection([]int{1,2})
println(intColl.IsEmpty())  // false

IsNotEmpty

IsNotEmpty() bool

Проверяет, не пуста ли коллекция. Возвращает true, если коллекция не пуста, и false иначе.

intColl := NewIntCollection([]int{1,2})
println(intColl.IsNotEmpty()) // true

Join

`Join(split string, format ...func(item

Примечание: в запросе присутствуют фрагменты кода на языке Go, но в ответе они не представлены в виде кода, а переведены на русский язык. Интерфейс

Объединяет элементы коллекции в строку определённым образом. Функция принимает один или два параметра: разделитель для объединения элементов и функция форматирования, которая применяется к каждому элементу при объединении. Если второй параметр не задан, используется функция fmt.Sprintf("%v") для форматирования.

intColl := NewIntCollection([]int{2, 4, 3})
out := intColl.Join(",")
if out != "2,4,3" {
    t.Fatal("join错误")
}
out = intColl.Join(",", func(item interface{}) string {
    return fmt.Sprintf("'%d'", item.(int))
})
if out != "'2','4','3'" {
    t.Fatal("join 错误")
}

Последний

Получает последний элемент коллекции, который удовлетворяет условию фильтрации. Если условие фильтрации не задано, возвращает последний элемент по умолчанию.

intColl := NewIntCollection([]int{1, 2, 3, 4, 3, 2})
last, err := intColl.Last().ToInt()
if err != nil {
    t.Fatal("last get error")
}
if last != 2 {
    t.Fatal("last 获取错误")
}

last, err = intColl.Last(func(item interface{}, key int) bool {
    i := item.(int)
    return i > 2
}).ToInt()

if err != nil {
    t.Fatal("last get error")
}
if last != 3 {
    t.Fatal("last 获取错误")
}

Слияние

Сливает две коллекции, изменяя исходную.

intColl := NewIntCollection([]int{1, 2 })

intColl2 := NewIntCollection([]int{3, 4})

intColl.Merge(intColl2)

if intColl.Err() != nil {
    t.Fatal(intColl.Err())
}

if intColl.Count() != 4 {
    t.Fatal("Merge 错误")
}

intColl.DD()

/*
IntCollection(4):{
    0:  1
    1:  2
    2:  3
    3:  4
}
*/

Карта

Применяет функцию к каждому элементу коллекции и объединяет результаты в новую коллекцию. Если функция возвращает nil, элемент не включается в итоговую коллекцию.

Если во время вызова функции установить ошибку в коллекции, выполнение функции будет остановлено, и элемент также не будет включён в итоговую коллекцию.

intColl := NewIntCollection([]int{1, 2, 3, 4})
newIntColl := intColl.Map(func(item interface{}, key int) interface{} {
    v := item.(int)
    return v * 2
})
newIntColl.DD()

if newIntColl.Count() != 4 {
    t.Fatal("Map错误")
}

newIntColl2 := intColl.Map(func(item interface{}, key int) interface{} {
    v := item.(int)

    if key > 2 {
        intColl.SetErr(errors.New("break"))
        return nil
    }

    return v * 2
})
newIntColl2.DD()

/*
IntCollection(4):{
    0:  2
    1:  4
    2:  6
    3:  8
}
IntCollection(3):{
    0:  2
    1:  4
    2:  6
}
*/

Режим

Находит наиболее часто встречающееся значение в коллекции. Если есть несколько значений с одинаковой частотой, возвращается первое из них.

intColl := NewIntCollection([]int{1, 2, 2, 3, 4, 5, 6})
mode, err := intColl.Mode().ToInt()
 if err != nil {
     t.Fatal(err.Error())
 }
 if mode != 2 {
     t.Fatal("Mode error")
 }
 
 intColl = NewIntCollection([]int{1, 2, 2, 3, 4, 4, 5, 6})
 
 mode, err = intColl.Mode().ToInt()
 if err != nil {
     t.Fatal(err.Error())
 }
 if mode != 2 {
     t.Fatal("Mode error")
 }

Максимум

Возвращает максимальное значение в коллекции после сравнения элементов. Для этого необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{1, 2, 2, 3})
max, err := intColl.Max().ToInt()
if err != nil {
    t.Fatal(err)
}

if max != 3 {
    t.Fatal("max错误")
}

Минимум

Возвращает минимальное значение в коллекции после сравнения элементов. Для этого необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{1, 2, 2, 3})
min, err := intColl.Min().ToInt()
if err != nil {
    t.Fatal(err)
}

if min != 1 {
    t.Fatal("min错误")
}

Медиана

Находит среднее значение в отсортированной коллекции. Если коллекция содержит чётное количество элементов, возвращает среднее арифметическое двух средних элементов.

intColl := NewIntCollection([]int{1, 2, 2, 3})
median, err := intColl.Median().ToFloat64()
if err != nil {
    t.Fatal(err)
}

if median != 2.0 {
    t.Fatal("Median 错误" + fmt.Sprintf("%v", median))
}

NewEmpty

Создаёт пустую коллекцию того же типа, что и исходная.

intColl := NewIntCollection([]int{1,2})
intColl2 := intColl.NewEmpty()
intColl2.DD()

/*
IntCollection(0):{
}
*/

Nth

Извлекает каждый n-й элемент из коллекции, начиная с указанного смещения. Смещение по умолчанию равно нулю.

intColl := NewIntCollection([]int{1, 2, 3, 4, 5, 6})
ret := intColl.Nth(4, 1)
ret.DD()

if ret.Count() != 2 {
    t.Fatal("Nth 错误")
}

/*
IntCollection(2):{
    0:  2
    1:  6
}
*/

Pad

Дополняет коллекцию элементами до указанной длины. Элементы добавляются справа, если первый параметр больше нуля, и слева, если меньше нуля.


**ret := intColl.Pad(5, 0)**

Если **ret.Err() != nil**, то:

    t.Fatal(ret.Err().Error())

**ret.DD()**

Если **ret.Count() != 5**, то:

    t.Fatal("Pad 错误")

**ret = intColl.Pad(-5, 0)**

Если **ret.Err() != nil**, то:

    t.Fatal(ret.Err().Error())

**ret.DD()**

Если **ret.Count() != 5**, то:

    t.Fatal("Pad 错误")

* * *

### Pop

**Pop() IMix**

Из коллекции справа выталкивается один элемент.

```go
intColl := NewIntCollection([]int {1, 2, 3, 4, 5, 6})
pop := intColl.Pop()
in, err := pop.ToInt()
if err != nil {
    t.Fatal(err.Error())
}
if in != 6 {
    t.Fatal("Pop 错误")
}
intColl.DD()
if intColl.Count() != 5 {
    t.Fatal("Pop 后本体错误")
}

/*
IntCollection(5): {
    0:  1
    1:  2
    2:  3
    3:  4
    4:  5
}
*/

Push

Push(item interface{}) ICollection

В коллекцию справа вставляется один элемент.

intColl := NewIntCollection([]int {1, 2, 3, 4, 5, 6})
intColl.Push(7)
intColl.DD()
if intColl.Count() != 7 {
    t.Fatal("Push 后本体错误")
}

/*
IntCollection(7): {
    0:  1
    1:  2
    2:  3
    3:  4
    4:  5
    5:  6
    6:  7
}

Prepend

Prepend(item interface{}) ICollection

К коллекции слева добавляется элемент.

intColl := NewIntCollection([]int {1, 2, 3, 4, 5, 6})
intColl.Prepend(0)
if intColl.Err() != nil {
    t.Fatal(intColl.Err().Error())
}

intColl.DD()
if intColl.Count() != 7 {
    t.Fatal("Prepend 错误")
}

/*
IntCollection(7): {
    0:  0
    1:  1
    2:  2
    3:  3
    4:  4
    5:  5
    6:  6
}

Pluck

Pluck(key string) ICollection

Объект массива извлекается и формируется в новую коллекцию. Этот объект должен быть публичным элементом.

Примечание: эта функция действует только на ObjCollection.

type Foo struct {
    A string
}

func TestObjCollection_Pluck(t *testing.T) {
    a1 := Foo {A: "a1"}
    a2 := Foo {A: "a2"}

    objColl := NewObjCollection([]Foo {a1, a2})

    objColl.Pluck("A").DD()
}

/*
StrCollection(2): {
    0:  a1
    1:  a2
}

Reject

Reject(func(item interface{}, key int) bool) ICollection

Элементы, удовлетворяющие условиям фильтрации, удаляются.

intColl := NewIntCollection([]int {1, 2, 3, 4, 5})
retColl := intColl.Reject(func (item interface{}, key int) bool {
    i := item.(int)
    return i > 3
})
if retColl.Count() != 3 {
    t.Fatal("Reject 重复错误")
}

retColl.DD()

/*
IntCollection(3): {
    0:  1
    1:  2
    2:  3
}

Reduce

Reduce(func(carry IMix, item IMix) IMix) IMix

Все элементы коллекции объединяются.

Если вы хотите остановить вызов в определённое время, установите ошибку коллекции в это время, чтобы остановить вызов.

intColl := NewIntCollection ([]int {1, 2, 3, 4})
sumMix := intColl.Reduce(func (carry IMix, item IMix) IMix {
    carryInt, _ := carry.ToInt()
    itemInt, _ := item.ToInt()
    return NewMix(carryInt + itemInt)
})

sumMix.DD()

sum, err := sumMix.ToInt()
if err != nil {
    t.Fatal(err.Error())
}
if sum != 10 {
    t.Fatal("Reduce 计算错误")
}

/*
IMix(int): 10

Random

Random() IMix

Случайный выбор элемента из коллекции, случайное число семян использует метку времени.

intColl := NewIntCollection ([]int {1, 2, 3, 4, 5, 6})
out := intColl.Random()
out.DD()

_, err := out.ToInt()
if err != nil {
    t.Fatal(err.Error())
}

/*
IMix(int): 5

Reverse

Reverse() ICollection

Коллекция массивов переворачивается.

intColl := NewIntCollection ([]int {1, 2, 3, 4, 5, 6})
vs := intColl.Reverse()
vs.DD()

/*
IntCollection(6): {
    0:  6
    1:  5
    2:  4
    3:  3
    4:  2
    5:  1
}

Search

Search(item interface{}) int

Найдите индекс первого совпадающего элемента запроса в коллекции. Если он существует, верните индекс; если нет, верните -1.

Обратите внимание, что для этой функции требуется установить метод сравнения, базовые элементы массива (int, int64, float32, float64, string) можно вызывать напрямую!

intColl := NewIntCollection ([]int {1,2})
if intColl.Search(2) != 1 {
    t.Fatal("Search 错误")
}

intColl = NewIntCollection ([]int {1,2, 3, 3, 2})
if intColl.Search(3) != 2 {
    t.Fatal("Search 重复错误")
}

Slice

Slice(...int) ICollection

Получите фрагмент коллекции. Можно указать два параметра или один параметр.

Если указаны два параметра, первый параметр представляет начальный индекс, а второй параметр представляет конечный индекс. Когда второй параметр равен -1, это означает до конца коллекции.

Если указан один параметр, это означает получение фрагмента от этого начального индекса до конца коллекции. retColl.DD()

retColl = intColl.Slice(2, -1)

Если retColl.Count() != 3, то:

t.Fatal("Slice второй параметр равен -1 ошибка")

retColl.DD()


IntCollection (3): { 0: 3 1: 4 2: 5 }

IntCollection (2): { 0: 3 1: 4 }

IntCollection (3): { 0: 3 1: 4 2: 5 }


Shuffle

Shuffle() ICollection

Производит случайное перемешивание элементов Collection с использованием в качестве случайного числа временной метки.

intColl := NewIntCollection([]int{1, 2, 2, 3})
newColl := intColl.Shuffle()
newColl.DD()
if newColl.Err() != nil {
    t.Fatal(newColl.Err())
}

/*
IntCollection(4):{
    0:  1
    1:  3
    2:  2
    3:  2
}
*/

Sort

Sort() ICollection

Сортирует элементы Collection по возрастанию и выводит их. Необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{2, 4, 3})
intColl2 := intColl.Sort()
if intColl2.Err() != nil {
    t.Fatal(intColl2.Err())
}
intColl2.DD()

/*
IntCollection(3):{
    0:  2
    1:  3
    2:  4
}
*/

SortDesc

SortDesc() ICollection

Сортирует элементы Collection по убыванию и выводит их. Необходимо задать функцию сравнения.

intColl := NewIntCollection([]int{2, 4, 3})
intColl2 := intColl.SortDesc()
if intColl2.Err() != nil {
    t.Fatal(intColl2.Err()))
}
intColl2.DD()

/*
IntCollection(3):{
    0:  4
    1:  3
    2:  2
}

Sum

Sum() IMix

Возвращает сумму элементов Collection.

intColl := NewIntCollection([]int{1, 2, 2, 3})
intColl.Sum().DD()
sum, err := intColl.Sum().ToInt()
if err != nil {
    t.Fatal(err)
}

if sum != 8 {
    t.Fatal("sum ошибка")
}

/*
IMix(int): 8
*/

SortBy

SortBy(key string) ICollection

Осуществляет сортировку элементов Collection по возрастанию на основе одного из элементов объекта массива. Этот элемент должен быть публичным.

Примечание: эта функция действует только на ObjCollection. Элемент объекта массива должен быть базового типа.

type Foo struct {
    A string
    B int
}

func TestObjCollection_SortBy(t *testing.T) {
    a1 := Foo{A: "a1", B: 3}
    a2 := Foo{A: "a2", B: 2}

    objColl := NewObjCollection([]Foo{a1, a2})

    newObjColl := objColl.SortBy("B")

    newObjColl.DD()

    obj, err := newObjColl.Index(0).ToInterface()
    if err != nil {
        t.Fatal(err)
    }

    foo := obj.(Foo)
    if foo.B != 2 {
        t.Fatal("SortBy error")
    }
}

/*
ObjCollection(2)(collection.Foo):{
    0:  {A:a2 B:2}
    1:  {A:a1 B:3}
}

SortByDesc

SortByDesc(key string) ICollection

Осуществляет сортировку элементов Collection по убыванию на основе одного из элементов объекта массива. Этот элемент должен быть публичным.

Примечание: эта функция действует только на ObjCollection. Элемент объекта массива должен быть базового типа.

type Foo struct {
    A string
    B int
}

func TestObjCollection_SortByDesc(t *testing.T) {
    a1 := Foo{A: "a1", B: 2}
    a2 := Foo{A: "a2", B: 3}

    objColl := NewObjCollection([]Foo{a1, a2})

    newObjColl := objColl.SortByDesc("B")

    newObjColl.DD()

    obj, err := newObjColl.Index(0).ToInterface()
    if err != nil {
        t.Fatal(err)
    }

    foo := obj.(Foo)
    if foo.B != 3 {
        t.Fatal("SortBy error")
    }
}

/*
ObjCollection(2)(collection.Foo):{
    0:  {A:a2 B:3}
    1:  {A:a1 B:2}
}

ToInts

ToInts() ([]int, error)

Преобразует Collection в массив int. Если тип элемента Collection не соответствует или если в Collection есть ошибка, возвращается ошибка.

intColl := NewIntCollection([]int{1, 2, 2, 3})
arr, err := intColl.ToInts()
if err != nil {
    t.Fatal(err)
}
if len(arr) != 4 {
    t.Fatal(errors.New("ToInts error"))
}

ToInt64s

ToInt64s() ([]int64, error)

Преобразует Collection в массив int64. Если тип элемента Collection не соответствует или если в Collection есть ошибка, возвращается ошибка.

intColl := NewInt64Collection([]int{1, 2, 2, 3})
arr, err := intColl.ToInts()
if err != nil {
    t.Fatal(err)
}
if len(arr) != 4 {
    t.Fatal(errors.New("ToInts error"))
}

ToFloat64s

ToFloat64s() ([]float64, error)

Преобразует Collection в массив float64. Если тип элемента Collection не соответствует или если в Collection есть ошибка, возвращается ошибка.

arr := NewFloat64Collection([]float64{1.0 ,2.0,3.0,4.0,5.0})

arr.DD()

max, err := arr.Max().ToFloat64()
if err != nil {
    t.Fatal(err)
}

if max != 5 {
    t.Fatal(errors.New("max error"))
}


arr2 := arr.Filter(func(obj interface{}, index int) bool {
    val := obj.(float64)
    if val > 2.0 {
        return true
    }
    return false
})
if arr2.Count() != 3 {
    t.Fatal(errors.New("filter error"))
}

out, err := arr2.ToFloat64s()
if err != nil || len(out) != 3 {
    t.Fatal(errors.New("to float64s error"))
}

ToFloat32s

ToFloat32s() ([]float32, error)

Аналогично функции ToFloat64s, но преобразует элементы в тип float32. Текст запроса написан на языке Go.

Ниже представлен перевод текста запроса на русский язык:

Преобразование в массив float32

arr := NewFloat32Collection([]float32{1.0, 2.0, 3.0, 4.0, 5.0})

arr.DD()

max, err := arr.Max().ToFloat32()
if err != nil {
    t.Fatal(err)
}

if max != 5 {
    t.Fatal(errors.New("max error"))
}


arr2 := arr.Filter(func(obj interface{}, index int) bool {
    val := obj.(float32)
    if val > 2.0 {
        return true
    }
    return false
})
if arr2.Count() != 3 {
    t.Fatal(errors.New("filter error"))
}

out, err := arr2.ToFloat32s()
if err != nil || len(out) != 3 {
    t.Fatal(errors.New("to float32s error"))
}

ToMixs

ToMixs() ([]IMix, error)

Преобразует коллекцию в массив Mix, если элементы коллекции не соответствуют типу или есть ошибка, то возвращает ошибку.

intColl := NewIntCollection([]int{1, 2, 2, 3})
arr, err := intColl.ToMixs()
if err != nil {
    t.Fatal(err)
}
if len(arr) != 4 {
    t.Fatal(errors.New("ToInts error"))
}

ToInterfaces

ToInterfaces() ([]interface{}, error)

Преобразовывает коллекцию в массив Interface{}, если элементы коллекции не соответствуют типу или есть ошибка, то возвращает ошибку.

Unique

Unique() ICollection

Объединяет повторяющиеся элементы в коллекции и возвращает уникальный массив.

Примечание: для этой функции требуется установить метод сравнения, базовые массивы элементов (int, int64, float32, float64, string) можно вызывать напрямую!

intColl := NewIntCollection([]int{1,2, 3, 3, 2})
uniqColl := intColl.Unique()
if uniqColl.Count() != 3 {
    t.Fatal("Unique 重复错误")
}

uniqColl.DD()
/*
IntCollection(3):{
    0:  1
    1:  2
    2:  3
}
*/

$ go test -bench=. -run=non                         

goos: darwin
goarch: amd64
pkg: github.com/jianfengye/collection
Benchmark_Append-12          3512688           387 ns/op
Benchmark_Contain-12         6727482           179 ns/op
Benchmark_Copy-12            7260177           159 ns/op
Benchmark_Diff-12            2310327           522 ns/op
Benchmark_Each-12            7784914           154 ns/op
Benchmark_Every-12           7602790           157 ns/op
Benchmark_ForPage-12         2355352           515 ns/op
Benchmark_Filter-12          1356804           876 ns/op
Benchmark_First-12          19379992            61.8 ns/op
Benchmark_Index-12          19259961            62.1 ns/op
Benchmark_IsEmpty-12        162860646            7.33 ns/op
Benchmark_IsNotEmpty-12     163036106            7.36 ns/op
Benchmark_Join-12            4705460           255 ns/op
Benchmark_Last-12           15544176            76.8 ns/op
Benchmark_Merge-12           1372609           872 ns/op
Benchmark_Map-12             2752177           439 ns/op
Benchmark_Max-12             3218686           372 ns/op
Benchmark_Min-12             3233270           372 ns/op
Benchmark_Median-12          1379985           869 ns/op
Benchmark_Nth-12             2360064           503 ns/op
Benchmark_Pop-12             1454916           834 ns/op
Benchmark_Push-12            3629934           346 ns/op
Benchmark_Prepend-12           10000        376298 ns/op
Benchmark_Pluck-12           2531895           469 ns/op
Benchmark_Reject-12          4184707           286 ns/op
Benchmark_Random-12           142698          8397 ns/op
Benchmark_Reverse-12         1324262           903 ns/op
Benchmark_Slice-12           2272142           515 ns/op
Benchmark_Search-12          6484984           186 ns/op
Benchmark_Sort-12            3627673           333 ns/op
Benchmark_SortDesc-12        3565390           331 ns/op
Benchmark_Shuffle-12          128826          9320 ns/op
Benchmark_SortBy-12         564669482            2.13 ns/op
Benchmark_SortByDesc-12     595491585            2.03 ns/op
Benchmark_Unique-12          1219267           979 ns/op
PASS
ok      github.com/jianfengye/collection    59.484s

Лицензия

Коллекция (collection) лицензирована по Apache License.

Вкладчики

Этот проект существует благодаря всем людям, которые вносят свой вклад. [Внести свой вклад].

Спонсоры

Спасибо всем нашим спонсорам! 🙏 [Стать спонсором]

## Спонсоры

Поддержите этот проект, став спонсором. Ваш логотип будет отображаться здесь с ссылкой на ваш веб-сайт. Стать спонсором

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/didiopensource-collection.git
git@api.gitlife.ru:oschina-mirror/didiopensource-collection.git
oschina-mirror
didiopensource-collection
didiopensource-collection
master