Коллекция Котлина

В Kotlin есть стандартная библиотека, в ней тоже существуют коллекции.

Особенность

  • Для коллекции Kotlin интерфейс между «только для чтения» и «с возможностью записи» четко разделен.
  • listOf(), mapOf()Etc, создайте экземпляр с функцией.
  • filter()Методы, подобные тем, которые подготовлены в Stream API, Iterable определены в.

Функции Kotlin, которые вам не хватало

Котлин Коллекции! Вы слышали о них, вы их использовали - так что есть смысл узнать о них еще больше! Стандартная библиотека Kotlin предоставляет потрясающие инструменты для управления группами элементов, и мы собираемся изучить их подробнее!

Давайте посмотрим, какие типы коллекций предлагает стандартная библиотека Kotlin, и рассмотрим общее подмножество операций, которое доступно для всех коллекций, которые вы получаете в стандартной библиотеке. Давайте начнем.

В стандартной библиотеке Kotlin у нас есть три больших типа коллекций: Списки, Наборы и Карты. Как и многие другие части стандартной библиотеки, эти коллекции доступны везде, где вы можете писать на Kotlin: на JVM, но также в Kotlin / Native, Kotlin / JS и обычном коде Kotlin.

Заявления о разрушении

Деструктурирующие объявления позволяют нам извлекать поля из объекта, аналогично тому, что можно сделать в TypeScript / ES6.



Kotlin Коллекционные функции



Погружение в коллекции Kotlin



Тип коллекции

  • "Список"
  • "Карта"
  • "Набор"

Отношения интерфейса

kotlin.collections Я выразил на диаграмме классов, какие отношения связаны с каждым интерфейсом в пакете.

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

ListMutableМетод изменения состояния коллекции не определен для интерфейса без таких как.
Эти интерфейсы не являются неизменяемыми, они предназначены только для чтения.

Разница между только для чтения и неизменяемым

Получил указание в Твиттере и я исправлю (я вас совершенно не понял, спасибо).

Котлин Listarrow Set доступен только для чтения, а не «неизменяемый».
Например, если вы напишете следующий код, Listвы сможете легко изменить содержимое

fun  main ( args :  Array < String >)  { 
    val  mutableList  =  mutableListOf ( 1 ,  2 ,  3 ) 
    val  list :  List < Int >  =  mutableList

    mutableList . add ( 9 )

    println ( mutableList ) 
    println ( list ) 
}

Результат исполнения

[1, 2, 3, 9]
[1, 2, 3, 9]

MutableListПоскольку List вы наследуете, вы можете заменить MutableList на List переменную.
В результате List существует вероятность того, что содержимое может быть переписано в другое место.

То, что он «только для чтения», а не «неизменный», означает такие вещи.

Сопоставление коллекции Java и коллекции Kotlin

При использовании коллекции Java (java.util.Listetc) из Kotlin некоторые типы автоматически преобразуются в тип Kotlin.

Например, java.util.Iteratortype kotlin.collection.Iterator преобразуется в побочный код Kotlin при использовании.
По этой причине, даже если вы используете коллекцию Java, удобный метод, который был подготовлен на Kotlin (all(), filter()который должен использоваться, и т. д.).

Тип Java сопоставлен с тем, какой тип Kotlin написан на следующей странице.

Отображаемые типы | Вызов кода Java из Котлина

Создать коллекцию

Чтобы создать коллекцию с помощью Kotlin, используйте специальную фабричную функцию.

Создать коллекцию только для чтения

Val  List  =  ListOf ( 1 ,  2 ,  3 ) 
Val  Map  =  MapOf ( "Foo"  To  "FOO" ,  "Bar"  To  "BAR" ) 
Val  Set  =  SetOf ( 9 ,  8 ,  7 )
  • listOf(), mapOf(), setOf() В функции он может генерировать коллекцию только для чтения соответственно.

Создать список, исключая нуль

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( null ,  1 ,  2 ,  3 ,  null ) 
    val  notNullList  =  listOfNotNull ( null ,  1 ,  2 ,  3 ,  null )
    println ( list ) 
    println ( notNullList ) 
}

Результат исполнения

[null, 1, 2, 3, null]
[one two Three]
  • listOfNotNull()Если вы используете метод, null создается коллекция, которая удаляет.

Создать доступную для записи коллекцию

Val  List  =  MutableListOf ( 1 ,  2 ,  3 ) 
Val  Map  =  MutableMapOf ( "Foo"  To  "FOO" ,  "Bar"  To  "BAR" ) 
Val  Set  =  MutableSetOf ( 9 ,  8 ,  7 )
  • mutableListOf(), mutableMapOf(), mutableSetOf() В функции он может генерировать доступную для записи коллекцию соответственно.

Создать стандартную коллекцию Java

fun  main ( args :  Array < String >)  { 
    printClass ( "arrayListOf" ,  arrayListOf < Int > ())
    printClass ( "sortedSetOf" ,  sortedSetOf < Int > ()) 
    printClass ( "hashSetOf" ,  hashSetOf < Int > ()) 
    printClass ( "linkedSetOf" ,  linkedSetOf < Int >
    PrintClass ( "HashMapOf" ,  HashMapOf < Int ,  Int > ()) 
    PrintClass ( "LinkedMapOf" ,  LinkedMapOf < Int ,  Int > ()) 
    PrintClass ( "SortedMapOf" ,  SortedMapOf < Int ,  Int > ()) 
}
fun  printClass ( functionName :  String ,  collection :  Any )  { 
    println ( "$ functionName = $ {collection.javaClass}" ) 
}

Результат исполнения

arrayListOf = class java.util.ArrayList
hashSetOf = class java.util.HashSet
linkedSetOf = class java.util.LinkedHashSet
sortedSetOf = class java.util.TreeSet
hashMapOf = class java.util.HashMap
linkedMapOf = class java.util.LinkedHashMap
sortedMapOf = class java.util.TreeMap
  • arrayListOf() Подготовлены функции, которые могут создавать коллекции стандартов Java.

Имущество

индексы

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 )
    val  indices :  IntRange  =  list . indices 
    println ( indices )
    for  ( i  in  list . indices )  { 
        println ( list [ i ]) 
    } 
}

Результат исполнения

0..2
1
2
3
  • ArrayCollectionСвойства, определенные для или.
  • Сохраняется IntRangeobject, представляющий диапазон индекса коллекции.
  • indicesTooth index множественная форма.

lastIndex

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 )
    println ( list . lastIndex ) 
}

Результат исполнения

2
  • ArrayListСвойства, определенные для или.
  • Вы можете получить последний индекс коллекции.

Методы, указанные в конкретном правиле

Некоторые методы коллекции имеют методы, названные по определенному правилу.

Кому: Метод добавления результатов обработки в доступную для записи коллекцию

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    val  result  =  mutableListOf ( "<9>" ) 
    iterable . mapTo ( result )  {  "<$ it>"  }
    println ( result ) 
}

Результат исполнения

[<9>, <1>, <2>, <3>, <4>, <5>]
  • ToВы можете передать доступную для записи коллекцию методу с завершающим суффиксом.
  • Результат обработки добавляется в доступную для записи коллекцию, переданную в аргументе.

Индексировано: также передать индекс цикла на итерацию

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    iterable . forEachIndexed  {  index ,  value  ->  println ( "[$ index] = $ value" )  } 
}

Результат исполнения

[0] = 1
[1] = 2
[2] = 3
[3] = 4
[4] = 5
  • Для метода Indexed, имя метода которого включено, в лямбда-выражение передается индекс цикла.

Обратный метод

Какой из Stream API, коллекция Kotlin?

Итерационный метод ниже

Методы в Iterable

все ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . all  {  it  <  4  }) 
    println ( iterable . all  {  it  <  3  }) 
}

Результат исполнения

true
false
  • true Возвращает, если все элементы соответствуют условиям, указанным в лямбда-выражении.

любой ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . any  {  it  <  4  }) 
    println ( iterable . any  {  it  <  0  }) 
}

Результат исполнения

true
false
  • true Возвращает, если какой-либо элемент соответствует условию, указанному в лямбда-выражении.

ассоциировать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
     associate { it to it * 10 } val map  =  iterable .     
    println ( map ) 
}

Результат исполнения

{1 = 10, 2 = 20, 3 = 30}
  • PairПри возврате каждого элемента Mapвы можете получить результат преобразования в.

associateBy ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    val  map  =  iterable . associateBy  {  it * 10  }
    println ( map ) 
}

Результат исполнения

{10 = 1, 20 = 2, 30 = 3}
  • Лямбда-выражение выполняется для каждого элемента

средний ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    val  average  =  iterable . average ()
    println ( average ) 
}

Результат исполнения

2.0
  • Iterable И среднее значение каждого элемента на фиг.
  • Этот метод можно использовать только для типов, аргументы Iterabletype которых вычислимы в числовом виде Int, Float, такие как и.
  • Iterable<String> Попытка использовать with приведет к ошибке компиляции.

содержит ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . contains ( 2 )) 
    println ( iterable . contains ( 4 )) 
}

Результат исполнения

true
false
  • IterableПроверьте, существует ли внутри указанный элемент.

считать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . count ()) 
    println ( iterable . count  { it  %  2  ==  1 }) 
}

Результат исполнения

3
2
  • Вы можете получить количество элементов.
  • boolean Передав лямбда-выражение аргументу, вы можете подсчитать только количество элементов, соответствующих условию.

отчетливый ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  1 ,  2 ,  2 ,  3 ,  1 ,  3 )
    println ( iterable . distinct ()) 
}

Результат исполнения

[one two Three]
  • Возвращает результат удаления повторяющихся элементов.

отдельныйBy ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "foo" ,  "bar" ,  "fizz" ,  "buzz" ,  "hoge" )
    println ( iterable . distinctBy  {  it . length  }) 
}

Результат исполнения

[foo, fizz]
  • Условие определения дублирования задается лямбда-выражением.
  • Элементы, значения которых, возвращаемые лямбда-выражением, равны, считаются дубликатами.

уронить ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . drop ( 2 )) 
}

Результат исполнения

[3, 4, 5]
  • Удалите элемент с начала по номеру, указанному в аргументе, и верните оставшиеся элементы в коллекции.

dropWhile ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . dropWhile  {  it  ! =  4  }) 
}

Результат исполнения

[4, 5]
  • true Удалите элемент до тех пор, пока не вернется лямбда-выражение, и верните оставшиеся элементы в коллекции.

elementAt ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . elementAt ( 2 )) 
}

Результат исполнения

3
  • Получить элемент по указанному индексу.
  • Выдается, если индекс выходит за пределы IndexOutOfBoundsException.

elementAtOrElse ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . elementAtOrElse ( 0 ,  {  it  *  10  })) 
    println ( iterable . elementAtOrElse ( 5 ,  {  it  *  10  })) 
}

Результат исполнения

1
50
  • Значение, возвращаемое, когда указанный индекс выходит за пределы допустимого диапазона, определяется лямбда-выражением второго аргумента.

elementAtOrNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . elementAtOrNull ( 0 )) 
    println ( iterable . elementAtOrNull ( 5 )) 
}
  • nullВозвращает, если указанный индекс выходит за пределы допустимого диапазона.

фильтр ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . filter  {  it  %  2  ! =  0  }) 
}

Результат исполнения

[13]
  • Он извлекает только те элементы, которые соответствуют условиям, указанным в лямбда-выражении, и возвращает их в коллекцию.

filterIsInstance ()

fun  main ( args :  Array < String >)  { 
    val  iterable :  Iterable <*>  =  listOf ( 1 ,  "foo" ,  2.4 ,  false )
    println ( iterable . filterIsInstance < Number > ()) 
    println ( iterable . filterIsInstance ( String :: class . java )) 
}

Результат исполнения

[1, 2.4]
  • Извлеките только экземпляры, совместимые с типом, указанным параметром типа, и верните его в коллекцию.
  • ClassВы можете указать тип, передав объект в качестве аргумента.

filterNot ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . filterNot  {  it  %  2  ==  0  }) 
}

Результат исполнения

[1, 3, 5]
  • Извлеките только те элементы, которые не соответствуют условию, указанному в лямбда-выражении, и верните их в коллекцию.

filterNotNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  null ,  3 ,  null ,  5 )
    println ( iterable . filterNotNull ()) 
}

Результат исполнения

[1, 3, 5]
  • null Он возвращается в коллекции, из которой был удален элемент.

найти ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . find  {  it  %  2  ==  0  }) 
    println ( iterable . find  {  it  %  6  ==  0  }) 
}

Результат исполнения

2
null
  • Получите первый элемент, который соответствует условию, указанному в лямбда-выражении.
  • Если нет элемента, соответствующего условию, возвращается null.

findLast ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . findLast  {  it  %  2  ==  0  }) 
    println ( iterable . findLast  {  it  %  6  ==  0  }) 
}

Результат исполнения

Four
null
  • Получить последний элемент, который соответствует условию, указанному в лямбда-выражении.
  • Если нет элемента, соответствующего условию, возвращается null.

первый ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . first ()) 
    println ( iterable . first  {  it  %  2  ==  0  }) 
    println ( iterable . first  {  it  %  6  ==  0  }) 
}

Результат исполнения

1
2
Exception in thread "main" java.util.NoSuchElementException: No element matching predicate was found.
  • Получите первый элемент.
  • Условие можно сузить с помощью лямбда-выражения.
  • Если соответствующий элемент не существует, генерируется исключение.

firstOrNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . FirstOrNull ()) 
    println ( iterable . FirstOrNull  {  it  %  2  ==  0  }) 
    println ( iterable . FirstOrNull  {  it  %  6  ==  0  }) 
}

Результат исполнения

1
2
null
  • Получите первый элемент.
  • Условие можно сузить с помощью лямбда-выражения.
  • Если соответствующий элемент не существует, возвращается null.

последний ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . last ()) 
    println ( iterable . last  {  it  %  2  ==  0  }) 
    println ( iterable . last  {  it  %  6  ==  0  }) 
}

Результат исполнения

Five
Four
Exception in thread "main" java.util.NoSuchElementException: Collection does not contain any element matching the predicate.
  • Получите последний элемент.
  • Лямбда-выражение аргумента позволяет указать условие для извлечения.
  • Если соответствующий элемент не существует, выдается исключение.

lastOrNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . LastOrNull ()) 
    println ( iterable . LastOrNull  {  it  %  2  ==  0  }) 
    println ( iterable . LastOrNull  {  it  %  6  ==  0  }) 
}

Результат исполнения

Five
Four
null
  • Получите последний элемент.
  • Лямбда-выражение аргумента позволяет указать условие для извлечения.
  • Если соответствующего элемента нет, возвращается null.

flatMap ()

fun  main ( args :  Array < String >)  { 
    val  iterable :  Iterable < Iterable < Int >>  =  listOf ( 
        listOf ( 1 ,  2 ,  3 ), 
        listOf ( 4 ,  5 ,  6 ), 
        listOf ( 7 ,  8 ,  9 ) 
    )
    println ( iterable . flatMap  {  it  }) 
}

Результат исполнения

[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • IterableConcatenate и вернуть возвращенные лямбда-выражения.

сплющить ()

fun  main ( args :  Array < String >)  { 
    val  iterable :  Iterable < Iterable < Int >>  =  listOf ( 
        listOf ( 1 ,  2 ,  3 ), 
        listOf ( 4 ,  5 ,  6 ), 
        listOf ( 7 ,  8 ,  9 ) 
    )
    println ( iterable . flatten ()) 
}

Результат исполнения

[1, 2, 3, 4, 5, 6, 7, 8, 9]
  • Заполните гнездо Iterable на единичный Iterable (сплющить).

складывать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "a" ,  "b" ,  "c" )
    println ( iterable . fold ( "Z" ,  {  buf ,  value  ->  buf  +  value  })) 
}}

Результат исполнения

Zabc
  • Начальное значение указывается с первым аргументом.
  • Для каждого элемента вызывается лямбда-выражение.
  • Для первого аргумента сначала передается значение, указанное в начальном значении, после чего передается значение, возвращенное предыдущим лямбда-выражением.
  • IterableКаждый элемент передается второму аргументу.

*** для каждого ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    iterable . forEach  {  println ( it )  } 
}

Результат исполнения

1
2
3
  • Обработайте каждый элемент.

группа по ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 ,  6 ,  7 )
    val  result 1 :  Map < String ,  List < Int >>  = 
        iterable . groupBy  {  if  ( it  %  2  ==  0 )  "even"  else  "odd"  }
    println ( result 1 )

     groupBy ( { if ( it % 2 == 0 ) "even" else "odd" }, { "<$ it>" } ) val result 2 :  Map < String ,  List < String >>  = 
        iterable .
                      
           
    println ( result 2 ) 
}

Результат исполнения

{Odd number = [1, 3, 5, 7], even number = [2, 4, 6]}
{Odd number = [<1>, <3>, <5>, <7>], even number = [<2>, <4>, <6>]}
  • Классифицируйте каждый элемент для каждого значения, возвращаемого лямбда-выражением, Map заполните его и верните.
  • Добавив лямбда-выражение ко второму аргументу, каждый элемент можно преобразовать в произвольное значение.

indexOfFirst ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . indexOfFirst  {  it  %  2  ==  0  }) 
}

Результат исполнения

1
  • Возвращает первый индекс, который соответствует условию указанного лямбда-выражения.

indextOfLast ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . indexOfLast  {  it  %  2  ==  0  }) 
}

Результат исполнения

3
  • Возвращает последний индекс, который соответствует условию указанного лямбда-выражения.

пересечь ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 ) 
    val  other  =  listOf ( 2 ,  3 ,  5 ,  2 )
    val  result :  Set < Int >  =  iterable . intersect ( other )
    println ( result ) 
}

Результат исполнения

[2, 3, 5]
  • IterableИзвлечь только те элементы, которые дублируются при указании аргументом Set, и вернуть их с заполнением.

joinTo ()

Базовый

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 ) 
    val  buffer :  Appendable  =  StringBuilder ()
    iterable . joinTo ( buffer )
    println ( buffer ) 
}

Результат исполнения

1, 2, 3, 4, 5
  • AppendableУстанавливает символьную строку, которая объединяет каждый элемент с указанной символьной строкой.
  • По умолчанию устанавливается символьная строка, в которой каждый элемент объединен запятой половинной ширины.

Отрегулируйте способ подключения

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 ) 
    val  buffer :  Appendable  =  StringBuilder ()
    iterable . JoinTo ( 
        buffer  =  buffer , 
        separator The  =  "-" , 
        prefix  =  "{" , 
        postfix  =  "}" , 
        limit  =  3 , 
        truncated The  =  "(ry" , 
        transform  =  {  "<$ it>"  } 
    )
    println ( buffer ) 
}

Результат исполнения

{<1> - <2> - <3> - (ry)

joinToString ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . joinToString ()) 
}

Результат исполнения

1, 2, 3, 4, 5
  • joinTo()AppendableВместо установки результата метода в символьную строку, верните его как есть.
  • separatorАргументы, такие как joinTo(), могут быть указаны так же, как.

карта ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . map  {  it  *  10  }) 
}

Результат исполнения

[10, 20, 30, 40, 50]
  • Возвращает новую коллекцию, в которой каждый элемент заменен значением, возвращаемым лямбда-выражением.

mapNotNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . mapNotNull  {  if  ( it  %  2  ==  0 )  it  else  null  }) 
}

Результат исполнения

[twenty four]
  • Возвращает новую коллекцию, в которой каждый элемент заменен значением, возвращаемым лямбда-выражением.
  • Однако, если лямбда-выражение null возвращается, оно пропускается.

макс (), мин ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . max ()) 
    println ( iterable . min ()) 
}

Результат исполнения

Five
1
  • max() Получите самый большой элемент.
  • min() Получите наименьший элемент.
  • Элементы Comparable необходимо реализовать.

maxBy (), minBy ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "zz" ,  "yyy" ,  "xxxx" )
    println ( iterable . maxBy  {  it . length  }) 
    println ( iterable . minBy  {  it . length  }) 
}

Результат исполнения

xxxx
zz
  • Сравните величину со значением, возвращаемым лямбда-выражением.
  • maxBy() Максимум minBy(), чтобы получить минимум с помощью.

maxWith (), minWith ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . MaxWith ( Comparator  {  a ,  b  ->  b  -  a  })) 
    println ( iterable . MinWith ( Comparator  {  a ,  b  ->  b  -  a  })) 
}

Результат исполнения

1
Five
  • ComparatorВы можете указать, как сравнивать величины, передав аргументы.
  • maxWith() Максимум minWith(), чтобы получить минимум с помощью.

минус ()

fun  main ( args :  Array < String >)  { 
    val  Iterable1  =  listOf ( 1 ,  1 ,  2 ,  2 ,  3 ,  4 ,  5 ) 
    val  Iterable2  =  listOf ( 2 ,  4 ,  5 );
    println ( iterable1 . minus ( 1 )) 
    println ( iterable1 . minus ( iterable2 )) 
    println ( iterable1  -  iterable2 ) 
}

Результат исполнения

[1, 2, 2, 3, 4, 5]
[1, 1, 3]
[1, 1, 3]
  • Возвращает коллекцию, из которой был удален указанный элемент.
  • Если в качестве аргумента передается только один элемент, удаляется только первый элемент.
  • IterableИ List, Sequence тоже можно пройти.
  • - Его тоже можно переписать оператором.

плюс ()

fun  main ( args :  Array < String >)  { 
    val  iterable1  =  listOf ( 1 ,  2 ,  3 ) 
    val  iterable2  =  listOf ( 3 ,  5 )
    println ( iterable1 . plus ( 6 )) 
    println ( iterable1 . plus ( iterable2 )) 
    println ( iterable1  +  iterable2 ) 
}

Результат исполнения

[1, 2, 3, 6]
[1, 2, 3, 3, 5]
[1, 2, 3, 3, 5]
  • Возвращает коллекцию с добавленным указанным элементом.
  • Вы также можете указать другие коллекции.
  • + Его тоже можно переписать оператором.

никто ()

fun  main ( args :  Array < String >)  { 
    val  iterable  1 =  listOf ( 1 ,  2 ,  3 ) 
    val  iterable  2 =  listOf < Int > ();
    println ( iterable1 . none ()) 
    println ( iterable2 . none ())
    println ( iterable1 . none  { it  <  2 }) 
    println ( iterable1 . none  { it  <  1 }) 
}

Результат исполнения

false
true
false
true
  • true Возвращает, если элементов нет.
  • Условие можно сузить с помощью лямбда-выражения.

раздел ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    val  pair :  Pair < Iterable < Int >,  Iterable < Int >>  =  iterable . partition  {  it  %  2  ==  0  }
    println ( pair ) 
}

Результат исполнения

([2, 4], [1, 3, 5])
  • Разделите элемент на два в условиях, заданных лямбда-выражением, и Pair верните его.
  • trueelement, условие которого удовлетворяется, устанавливается на first, false, а элемент, который становится условием, устанавливается на secondset.

уменьшать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "a" ,  "b" ,  "c" )
    println ( iterable . reduce  { tmp ,  value  -> 
        println ( "tmp = $ tmp, value = $ value" ) 
        tmp  +  ":"  +  value 
    }) 
}

Результат исполнения

tmp = a, value = b
tmp = a: b, value = c
a: b: c
  • Обработайте каждый элемент при наложении преобразования по лямбда-выражению.
  • Для первого аргумента лямбда-выражения первый элемент передается впервые, после чего передается значение, возвращенное предыдущим лямбда-выражением.

requireNoNulls ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "a" ,  "b" ,  null ,  "c" )
    println ( iterable . requireNoNulls ()) 
}

Результат исполнения

Exception in thread "main" java.lang.IllegalArgumentException: null element found in [a, b, null, c].
    at kotlin.collections.CollectionsKt ___ CollectionsKt.requireNoNulls (_Collections.kt: 1583)
  • Убедитесь, что null нет в коллекции.
  • nullВыбрасывается IllegalArgumentException, если он существует.

обратный ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 )
    println ( iterable . reversed ()) 
}

Результат исполнения

[4, 3, 2, 1]
  • Возвращает коллекцию с содержимым в обратном порядке.

не замужем ()

fun  main ( args :  Array < String >)  { 
    val  iterable1  =  listOf ( 9 ) 
    val  iterable2  =  listOf ( 1 ,  2 ,  3 ,  4 )
    println ( iterable1 . single ()) 
    println ( iterable2 . single  { it  ==  3 }) 
}

Результат исполнения

9
3
  • Получите единственный элемент, который есть в коллекции.
  • Также можно сузить условия с помощью лямбда-формулы.
  • Исключение выдается, если имеется 0, 2 или более соответствующих элементов, как показано ниже.
fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 )

    println ( iterable . single ()) 
}

Результат исполнения

Exception in thread "main" java.lang.IllegalArgumentException: Collection has more than one element.
    at kotlin.collections.CollectionsKt ___ CollectionsKt.single (_Collections.kt: 487)

singleOrNull ()

fun  main ( args :  Array < String >)  { 
    val  iterable1  =  listOf ( 9 ) 
    val  iterable2  =  listOf ( 1 ,  2 ,  3 ,  4 )

    println ( iterable1 . singleOrNull ())
    println ( iterable2 . singleOrNull  { it  ==  4 }) 
    println ( iterable2 . singleOrNull ()) 
}

Результат исполнения

9
Four
null
  • Базовым является single()same, null, за исключением того, что он возвращается, если соответствующий элемент не существует.

sorted (), sortedDescending ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 3 ,  1 ,  2 ,  4 )
    println ( iterable . sorted ()) 
    println ( iterable . sortedDescending ()) 
}

Результат исполнения

[1, 2, 3, 4]
[4, 3, 2, 1]
  • Возвращает отсортированную коллекцию элементов.
  • sorted()Сортировка по возрастанию, сортировка по sortedDescending() убыванию.

sortedBy (), sortedByDescending ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 3 ,  1 ,  2 ,  4 )
    println ( iterable . sortedBy  {  it  *  - 1  }) 
    println ( iterable . sortedByDescending  {  it  *  - 1  }) 
}

Результат исполнения

[4, 3, 2, 1]
[1, 2, 3, 4]
  • Вы можете настроить метод сортировки, передав лямбда-выражение, которое возвращает значение, используемое для сортировки суждений.
  • sortedBy()Сортировка по возрастанию, сортировка по sortedByDescending() убыванию.

sortedWith ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 3 ,  1 ,  2 ,  4 )
    println ( iterable . sortedWith ( Comparator  {  left ,  right  ->  right  -  left  })) 
}

Результат исполнения

[4, 3, 2, 1]
  • ComparatorВыполните и отсортируйте метод сортировки в.

вычесть ()

fun  main ( args :  Array < String >)  { 
    val  Iterable1  =  listOf ( 1 ,  1 ,  2 ,  2 ,  3 ,  4 ,  5 ) 
    val  Iterable2  =  listOf ( 2 ,  3 ,  4 )
    println ( iterable1 . subtract ( iterable2 )) 
}

Результат исполнения

[1, 5]
  • Извлечь только элементы, которых нет в указанной коллекции, и Set вернуть ее.
  • Перекрытие устранено.

сумма ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . sum ()) 
}

Результат исполнения

6
  • Возвращает сумму каждого элемента коллекции.
  • Элементы коллекции должны быть типами, которые можно вычислить численно.

sumBy ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . sumBy  {  it  *  10  }) 
}

Результат исполнения

60
  • Вычислите сумму со значением, возвращаемым лямбда-выражением.

sumByDouble ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    println ( iterable . sumByDouble  {  it  *  1.5  }) 
}

Результат исполнения

9.0
  • Double Вычислить сумму со значением, возвращаемым лямбда-выражением.

брать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . take ( 3 )) 
}

Результат исполнения

[one two Three]
  • Получить указанное количество элементов с начала Listи вернуть его.

takeWhile ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( iterable . takeWhile  {  it  <  5  }) 
}

Результат исполнения

[1, 2, 3, 4]
  • С самого начала получите элемент до тех пор, пока условие, указанное в лямбда-выражении, не перестанет выполняться List, и верните его.

toCollection ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    val  result :  MutableCollection < Int >  =  mutableListOf ( 9 )
    iterable . toCollection ( result )
    println ( result ) 
}

Результат исполнения

[9, 1, 2, 3]
  • MutableCollectionДобавить элемент к указанному.

toHashSet ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  1 ,  2 ,  2 ,  2 ,  3 ,  3 )
    val  result :  HashSet < Int >  =  iterable . toHashSet ()
    println ( result ) 
}

Результат исполнения

[one two Three]
  • HashSet .

к списку ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  setOf ( 1 ,  2 ,  3 )
    val  list :  List < Int >  =  iterable . toList ()
    println ( list ) 
}

Результат исполнения

[one two Three]
  • List .

для отображения ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "foo"  to  "FOO" ,  "bar"  to  "BAR" )
    val  map :  Map < String ,  String >  =  iterable . toMap ()
    println ( map )
    val  result  =  mutableMapOf ( "fizz"  to  "FIZZ" )
    iterable . toMap ( result )
    println ( result ) 
}

Результат исполнения

{foo = FOO, bar = BAR}
{fizz = FIZZ, foo = FOO, bar = BAR}
  • Iterable<Pair<K, V>>A Map<K, V>конвертировать в.
  • MutableMapПередача в качестве аргумента Mapдобавляет к нему.

toMutableList ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 )
    val  result :  MutableList < Int >  =  iterable . toMutableList ()
    println ( result ) 
}

Результат исполнения

[one two Three]
  • MutableList .

toMutableSet ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  1 ,  2 ,  3 ,  3 )
    val  result :  MutableSet < Int >  =  iterable . toMutableSet ()
    println ( result ) 
}

Результат исполнения

[one two Three]
  • MutableSet .

устанавливать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  1 ,  2 ,  3 ,  3 )
    val  result :  Set < Int >  =  iterable . toSet ()
    println ( result ) 
}

Результат исполнения

[one two Three]
  • Set .

toSortedSet ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 3 ,  1 ,  2 ,  3 ,  1 ,  4 )
    val  result :  SortedSet < Int >  =  iterable . toSortedSet ()
    println ( result ) 
}

Результат исполнения

[1, 2, 3, 4]
  • SortedSet .

союз ()

fun  main ( args :  Array < String >)  { 
    val  iterable  1 =  listOf ( 1 ,  2 ,  3 ,  4 ) 
    val  iterable  2 =  listOf ( 2 ,  4 ,  5 ,  6 )
    Val  Result :  Set < Int >  =  Iterable1 . Union ( Iterable2 )
    println ( result ) 
}

Результат исполнения

[1, 2, 3, 4, 5, 6]
  • Верните Iterablesum двух элементов и Setreturn.

разархивировать ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( "one"  to  1 ,  "two"  to  2 ,  "three"  to  3 )
    val  result :  Pair < List < String >,  List < Int >>  =  iterable . unzip ()
    println ( result ) 
}

Результат исполнения

([one, two, three], [1, 2, 3])
  • List<Pair<T, U>>A Pair<List<T>, List<U>>конвертировать в.

withIndex ()

fun  main ( args :  Array < String >)  { 
    val  iterable  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    val  result :  Iterable < IndexedValue < Int >>  =  iterable . withIndex ()
    result . forEach  {  println ( "index = $ {it.index}, value = $ {it.value}" )  } 
}

Результат исполнения

index = 0, value = 1
index = 1, value = 2
index = 2, value = 3
index = 3, value = 4
index = 4, value = 5
  • Iterable<IndexedValue<T>> .

zip ()

fun  main ( args :  Array < String >)  { 
    val  iterable  1 =  listOf ( 1 ,  2 ,  3 )
    Val  Iterable2  =  ListOf ( "One" ,  "Two" ,  "Three" ,  "Four" ) 
    Val  Result1 :  List < Pair < Int ,  String >>  =  Iterable1 . Zip ( Iterable2 ) 
    Println ( Result1 )
    val  array  =  arrayOf ( 1.1 ,  2.2 ) 
    val  result 2 :  List < Pair < Int ,  Double >>  =  iterable 1 .. zip ( array ) 
    println ( result 2 ) 
}

Результат исполнения

[(1, one), (2, two), (3, three)]
[(1, 1.1), (2, 2.2)]
  • Два Iterable (или Array каждый элемент) одного из Pair, затем List возвращается упакованными в файл.
  • Если количество элементов не совпадает, его корректируют на меньшее.
  • Также можно преобразовать каждый элемент с помощью лямбда-выражения следующим образом.
fun  main ( args :  Array < String >)  { 
    val  iterable  1 =  listOf ( 1 ,  2 ,  3 )

    val  iterable2  =  listOf ( "one" ,  "two" ,  "three" ,  "four" ) 
    val  result1 :  List < String >  =  iterable1 . zip ( iterable2 ,  { a ,  b  ->  "$ b ($ a)" } ) 
    println ( result 1 )

    val  array  =  arrayOf ( 1.1 ,  2.2 ) 
    val  result2 :  the List < Int >  =  Iterable1 . zip ( array ,  { a ,  b  ->  ( a  +  b * 10 .) toInt ()}) 
    println ( result2 ) 
}

Результат исполнения

[one (1), two (2), three (3)]
[12, 24]

Метод сбора

containsAll ()

fun  main ( args :  Array < String >)  { 
    val  collection1  =  listOf ( 1 ,  2 ,  3 ,  4 ) 
    val  collection2  =  listOf ( 2 ,  3 ) 
    val  Collection3  =  listOf ( 4 ,  5 )
    println ( collection1 . containsAll ( collection2 )) 
    println ( collection1 . containsAll ( Collection3 )) 
}

Результат исполнения

true
false
  • Он проверяет, все ли элементы включены в указанную коллекцию.

isNotEmpty ()

fun  main ( args :  Array < String >)  { 
    val  collection1  =  listOf ( 1 ,  2 ,  3 ,  4 ) 
    val  collection2  =  listOf < Int > ()
    println ( collection1 . isEmpty ()) 
    println ( collection2 . isEmpty ()) 
}

Результат исполнения

false
true
  • Проверьте, не из коллекции ли.

orEmpty ()

Fun  Main ( Args :  Array < String >)  { 
    Val  Collection1  =  ListOf ( 1 ,  2 ,  3 ,  4 ) 
    Val  Collection2 :  Collection < Int ?>  =  Null
    println ( collection1 . orEmpty ()) 
    println ( collection2 . orEmpty ()) 
}

Результат исполнения

[1, 2, 3, 4]
[]
  • Возвращает пустую коллекцию, если тип коллекции nullacceptable, а nullit действительно.
  • В противном случае верните себя как есть.

to *** Массив ()

fun  main ( args :  Array < String >)  { 
    val  collection  =  listOf ( 1 ,  2 ,  3 ,  4 )
    val  array :  IntArray  =  collection . toIntArray ()
    array . forEach  {  println ( it )  } 
}

Результат исполнения

1
2
3
Four
  • ***Array .
  • Boolean, Byte, Char, Double, Float, Int, Long, ShortЕсть.

toTypedArray ()

fun  main ( args :  Array < String >)  { 
    val  collection  =  listOf ( 1 ,  2 ,  3 ,  4 )
    val  array :  Array < Int >  =  collection . toTypedArray ()
    array . forEach  {  println ( it )  } 
}

Результат исполнения

1
2
3
Four
  • Array<T> .

Метод списка

asReversed ()

fun  main ( args :  Array < String >)  { 
    val  list  =  mutableListOf ( 1 ,  2 ,  3 )
    println ( "[before] list = $ list" )
    val  asReversed  =  list . asReversed ()
    println ( "[after asReversed] list = $ list" ) 
    println ( "[after asReversed] asReversed = $ asReversed" )
    list  + =  9 
    asReversed  + =  99
    println ( "[after modify] list = $ list" ) 
    println ( "[after modify] asReversed = $ asReversed" ) 
}

Результат исполнения

[before] list = [1, 2, 3]
[after asReversed] list = [1, 2, 3]
[after asReversed] asReversed = [3, 2, 1]
[after modify] list = [99, 1, 2, 3, 9]
[after modify] asReversed = [9, 3, 2, 1, 99]
  • ListВозвращает обратный порядок.
  • reversed()Разница между и в MutableList случае MutableList возврата к сути.
  • reversed()В случае List.
  • Возвращаемое значение связано с Listoriginal, List, и когда одно изменяется, изменение отражается на другом.

binarySearch ()

Базовый

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  2 ,  3 ,  3 ,  3 )
    println ( list . binarySearch ( 3 )) 
    println ( list . binarySearch ( 9 )) 
    println ( list . binarySearch ( element  =  3 ,  fromIndex  =  0 ,  toIndex  =  2 )) 
    println ( list . binarySearch ( element  =  3 ,  comparator  =  Comparator  {  a ,  b  -> a  -  b  }) 
}}

Результат исполнения

Four
-7
-3
Four
  • Найдите элемент, указанный двоичным поиском, и верните индекс соответствующего места.
  • Если элемент не найден, возвращается отрицательное число.
  • List Необходимо заранее отсортировать.
  • Если он не отсортирован, возвращается недопустимое значение.
  • Второй аргумент (fromIndex) и третий аргумент (toIndex) позволяют указать область поиска.
  • comparator, можно указать как сравниваются элементы.

binarySearchBy ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( "I" ,  "he" ,  "her" ,  "you" )
    println ( list . binarySearchBy ( "Thank you" ,  selector  =  {  "Thank $ it"  })) 
}}

Результат исполнения

3
  • Преобразует каждый элемент по selector, ищет элемент, соответствующий значению, и возвращает соответствующий индекс.
  • List Требуется разобрать.

компонент * ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( "one" ,  "two" ,  "three" ,  "four" ,  "five" )
    println ( list . component1 ()) 
    println ( list . component2 ()) 
    println ( list . component3 ()) 
    println ( list . Component4 ()) 
    println ( list . Component5 ()) 
}

Результат исполнения

one
two
three
four
five
  • Получите элементы с первого по пятый.
  • Докоро использовал… неизвестно.

dropLast ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( list . dropLast ( 2 )) 
}

Результат исполнения

[one two Three]
  • Результат удаления элемента с обратной стороны столько, сколько заданный номер List возвращается.

dropLastWhile ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( list . dropLastWhile  {  it  >  2  }) 
}

Результат исполнения

[1, 2]
  • В то время как лямбда-выражение true возвращается, оно удаляет элемент из хвоста и возвращает оставшиеся элементы List в заполненной форме.

foldRight ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( "a" ,  "b" ,  "c" )
    println ( list . foldRight ( "Z" ,  {  value ,  buf  ->  buf  +  value  })) 
}

Результат исполнения

Zcba
  • Обрабатываем элементы последовательно от хвоста и накапливаем результат.
  • Для второго аргумента лямбда-выражения начальное значение, переданное в первом аргументе, передается в первый раз, а значение, возвращаемое предыдущим лямбда-выражением, передается во второй раз.
  • Начальное значение указывается с первым аргументом.
  • Для каждого элемента вызывается лямбда-выражение.
  • Для первого аргумента сначала передается значение, указанное в начальном значении, после чего передается значение, возвращенное предыдущим лямбда-выражением.
  • Во втором аргументе Iterable каждый элемент передается последовательно с конца.

getOrElse ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 )
    println ( list . getOrElse ( 0 ,  {  9  })) 
    println ( list . getOrElse ( 4 ,  {  9  })) 
}

Результат исполнения

1
9
  • Получить элемент по указанному индексу.
  • Если индекс выходит за пределы допустимого диапазона, он возвращает значение, возвращаемое лямбда-выражением, как значение по умолчанию.

getOrNull ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 )
    println ( list . getOrNull ( 0 )) 
    println ( list . getOrNull ( 4 )) 
}

Результат исполнения

1
null
  • Получить элемент по указанному индексу.
  • Если индекс вне диапазона null, возвращается.

reduceRight ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( "a" ,  "b" ,  "c" )
    println ( list . reduceRight  {  value ,  tmp  -> 
        println ( "value = $ value, tmp = $ tmp" ) 
        tmp  +  ":"  +  value 
    }) 
}

Результат исполнения

value = b, tmp = c
value = a, tmp = c: b
c: b: a
  • Последовательно обрабатывать каждый элемент с конца при наложении преобразования по лямбда-выражению.
  • Для первого аргумента лямбда-выражения последний элемент передается в первый раз, а затем передается значение, возвращенное предыдущим лямбда-выражением.

кусочек ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( "0: one" ,  "1: two" ,  "2: three" ,  "3: four" ,  "4: five" ) 
    println ( list . slice ( 2 .. 4 ))
    val  indices  =  listOf ( 1 ,  3 ,  4 ) 
    println ( list . slice ( indices )) 
}

Результат исполнения

[2: three, three: four, four: five]
[1: two, 3: four, 4: five]
  • Извлеките элемент, указав индекс.
  • IntRange, можно извлекать элементы по спецификации диапазона.
  • Iterable, можно извлекать только элементы указанного индекса.

takeLast ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( list . takeLast ( 2 )) 
}

Результат исполнения

[4, 5]
  • Получить элемент с конца по указанному номеру Listи вернуть его как.

takeLastWhile ()

fun  main ( args :  Array < String >)  { 
    val  list  =  listOf ( 1 ,  2 ,  3 ,  4 ,  5 )
    println ( list . takeLastWhile  {  it  >  2  }) 
}

Результат исполнения

[3, 4, 5]
  • В то время как лямбда-выражение true возвращается, Listit последовательно получает элементы из хвоста, заполняет их и возвращает.

Методы в MutableIterable

убрать все ()

fun  main ( args :  Array < String >)  { 
    val  mutableIterable  =  mutableListOf ( 1 ,  2 ,  3 ,  1 ,  2 ,  3 )
    mutableIterable . removeAll  {  it  ==  3  }
    println ( mutableIterable ) 
}

Результат исполнения

[1, 2, 1, 2]
  • Удалите все элементы, соответствующие условию, указанному в лямбда-выражении.

keepAll ()

fun  main ( args :  Array < String >)  { 
    val  mutableIterable  =  mutableListOf ( 1 ,  2 ,  3 ,  1 ,  2 ,  3 )
    mutableIterable . retainAll  {  it  ==  3  }
    println ( mutableIterable ) 
}

Результат исполнения

[3, 3]
  • Оставьте только те элементы, которые соответствуют условиям, указанным в лямбда-выражении, а все остальные удалите.

Методы MutableCollection

добавить все ()

fun  main ( args :  Array < String >)  { 
    val  mutableCollection  =  mutableListOf ( 1 ,  2 ,  3 ) 
    val  iterable  =  listOf ( 7 ,  8 ,  9 )
    mutableCollection . addAll ( iterable )
    println ( mutableCollection ) 
}

Результат исполнения

[1, 2, 3, 7, 8, 9]
  • Добавьте все элементы указанной коллекции.

minusAssign ()

fun  main ( args :  Array < String >)  { 
    val  mutableCollection  =  mutableListOf ( 1 ,  2 ,  3 ,  4 ,  5 ) 
    val  iterable  =  listOf ( 2 ,  4 )
    mutableCollection . minusAssign ( iterable ) 
    println ( mutableCollection )
    mutableCollection  - =  5 
    println ( mutableCollection ) 
}

Результат исполнения

[1, 3, 5]
[13]
  • Удалить коллекцию или заданный самим собой элемент.
  • -= .

plusAssign ()

fun  main ( args :  Array < String >)  { 
    val  mutableCollection  =  mutableListOf ( 1 ,  2 ,  3 ) 
    val  iterable  =  listOf ( 7 ,  8 )
    mutableCollection . plusAssign ( iterable ) 
    println ( mutableCollection )
    mutableCollection  + =  9 
    println ( mutableCollection ) 
}

Результат исполнения

[1, 2, 3, 7, 8]
[1, 2, 3, 7, 8, 9]
  • Добавить коллекцию или заданный самим собой элемент.
  • += .

Удалить ()

fun  main ( args :  Array < String >)  { 
    val  mutableCollection  =  mutableListOf ( 1 ,  2 ,  3 )
    mutableCollection . remove ( 2 )
    println ( mutableCollection ) 
}

Результат исполнения

[13]
  • Удаляет указанный элемент.

Методы в MutableList

обеспечить регресс ()

fun  main ( args :  Array < String >)  { 
    val  mutableList  =  mutableListOf ( 1 ,  2 ,  3 )
    mutableList . reverse ()
    println ( mutableList ) 
}

Результат исполнения

[3, 2, 1]
  • Поменяйте порядок.

sort (), sortDescending ()

fun  main ( args :  Array < String >)  { 
    val  mutableList  =  mutableListOf ( 3 ,  1 ,  2 )
    mutableList . sort () 
    println ( mutableList )
    mutableList . sortDescending () 
    println ( mutableList ) 
}

Результат исполнения

[one two Three]
[3, 2, 1]
  • Отсортируйте элементы.
  • sort() по возрастанию, sortDescending() но по убыванию.

sortBy (), sortByDescending ()

fun  main ( args :  Array < String >)  { 
    val  mutableList  =  mutableListOf ( "aaa" ,  "bb" ,  "c" )
    mutableList . sortBy  {  it . length  } 
    println ( mutableList )
    mutableList . sortByDescending  {  it . length  } 
    println ( mutableList ) 
}

Результат исполнения

[c, bb, aaa]
[aaa, bb, c]
  • Сортировать по значению, возвращаемому лямбда-выражением.
  • sortBy() по возрастанию, sortByDescending() но по убыванию.

sortWith ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  mutableList  =  mutableListOf ( 2 ,  3 ,  1 )
    mutableList . sortWith ( Comparator  {  a ,  b  ->   b  -  a }) 
    println ( mutableList ) 
}

Результат исполнения

[3, 2, 1]
  • Comparator Укажите и отсортируйте.

Карта Следующие методы

Метод карты

все ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . All  {  It . Key  Is  String  }) 
    Println ( Map . All  {  It . Key . Contains ( "O" )  }) 
}

Результат исполнения

true
false
  • true Возвращает, если лямбда-выражение возвращает все записи true.

любой ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . any  {  it . key . the contains ( "o" )  }) 
    println ( map . any  {  it . key . isEmpty ()  }) 
}

Результат исполнения

true
false
  • true Возвращает, если лямбда-выражение возвращает одну из записей true.

содержит ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . Contains ( "One" )) 
    Println ( Map . Contains ( "ONE" )) 
}

Результат исполнения

true
false
  • Убедитесь, что у вас есть запись для указанного ключа.
  • containsKey() То же, что и.

containsKey ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . ContainsKey ( "One" )) 
    Println ( Map . ContainsKey ( "ONE" )) 
}

Результат исполнения

true
false
  • Убедитесь, что у вас есть запись для указанного ключа.
  • contains() То же, что и.

containsValue ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . ContainsValue ( "One" )) 
    Println ( Map . ContainsValue ( "ONE" )) 
}

Результат исполнения

false
true
  • Убедитесь, что у вас есть запись с указанным значением.

считать ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . count ()) 
    println ( map . count  {  it . key . contains ( "t" )  }) 
}

Результат исполнения

3
2
  • Получите количество записей.
  • Можно сузить количество записей для подсчета с помощью лямбда-выражения.

filter (), filterNot ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . filter  {  it . key . the contains ( "t" )  }) 
    println ( map . FilterNot  {  it . key . the contains ( "t" )  }) 
}

Результат исполнения

{two = TWO, three = THREE}
{one = ONE}
  • filter() Извлекает только те записи, которые соответствуют условиям, указанным в лямбда-выражении.
  • filterNot() Извлекает только те записи, которые не соответствуют условиям, указанным в лямбда-выражении.
  • Каждая запись передается лямбда-выражению.

filterKeys (), filterValues ​​()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . FilterKeys  {  key  ->  key . the contains ( "o" )  }) 
    println ( map . FilterValues  {  value  ->  value . the contains ( "T" )  }) 
}

Результат исполнения

{one = ONE, two = TWO}
{two = TWO, three = THREE}
  • Извлекаются только записи, соответствующие условиям, указанным в лямбда-выражении.
  • filterKeys(), ключ каждой записи передается в лямбда-выражение.
  • filterValues(), значение каждой записи передается в лямбда-выражение.

flatMap ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . flatMap  {  listOf ( it . key ,  it . value )  }) 
}

Результат исполнения

[one, ONE, two, TWO, three, THREE]
  • Для каждого элемента вызывается лямбда-выражение.
  • И он возвращается к Iterableone, возвращаемому в каждом вызове лямбда-выражения List.

для каждого ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    map . forEach  {  println ( "key = $ {it.key}, value = $ {it.value}" )  } 
}

Результат исполнения

key = one, value = ONE
key = two, value = TWO
key = three, value = THREE
  • Обработайте каждую запись.

getOrElse ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . getOrElse ( "one" ,  { "DEFAULT" })) 
    println ( map . getOrElse ( "nine" ,  { "DEFAULT" })) 
}

Результат исполнения

ONE
DEFAULT
  • Если запись, соответствующая указанному ключу, не существует, она возвращает значение, возвращаемое лямбда-выражением, как значение по умолчанию.

isEmpty (), isNotEmpty ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf < String ,  String > ()
    println ( map . isEmpty ()) 
    println ( map . isNotEmpty ()) 
}

Результат исполнения

true
false
  • Map Вы можете проверить, пусто ли оно.

никто ()

fun  main ( args :  Array < String >)  { 
    val  map1  =  mapOf ( "one"  to  "ONE" ) 
    val  map2  =  mapOf < String ,  String >
    println ( map1 . none ()) 
    println ( map2 . none ())
    println ( map1 . none  { it . key  ==  "two" }) 
}

Результат исполнения

false
true
true
  • Map Пусто подтверждено.
  • Передав лямбда-выражение, мы можем сузить круг условий.

orEmpty ()

Fun  Main ( Args :  Array < String >)  { 
    Val  Map1  =  MapOf ( "One"  To  "ONE" ,  "Two"  To  "TWO" ,  "Three"  To  "THREE" ) 
    Val  Map2 :  Map < String ,  String >?  =  null
    println ( map1 . orEmpty ()) 
    println ( map2 . orEmpty ()) 
}

Результат исполнения

{one = ONE, two = TWO, three = THREE}
{}
  • MapЕсли тип null разрешен и nullбыл ли он на самом деле Map, возвращается пустым.
  • В противном случае верните себя как есть.

карта (), mapNotNull ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . Map  {  If  ( It . Key  ==  "Two" )  Null  Else  "$ {It.Key} = $ {It.Value}"  }) 
    Println ( Map . MapNotNull  {  If  ( It . Key  ==  " two " )  null  else  " $ {it.key} = $ {it.value} "  }) 
}

Результат исполнения

[one = ONE, null, three = THREE]
[one = ONE, three = THREE]
  • Для каждой записи вызывается лямбда-выражение.
  • Значение, возвращаемое лямбда-выражением, равно Listfilled и возвращается.
  • map()Is nullit, поскольку это тот случай, который возвращается Listpack в.
  • mapNotNull()Это, null пропустить.

mapKeys (), mapValues ​​()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . mapKeys  {  "<$ {it.key}>"  )) 
    println ( map . mapValues  {  "<$ {it.value}>"  }) 
}

Результат исполнения

{<one> = ONE, <two> = TWO, <three> = THREE}
{one = <ONE>, two = <TWO>, three = <THREE>}
  • Для каждой записи вызывается лямбда-выражение.
  • mapKeys(), ключ каждой записи заменяется значением, возвращаемым лямбда-выражением.
  • mapValues(), значение каждой записи заменяется значением, возвращаемым лямбда-выражением.

maxBy (), minBy ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( map . maxBy  {  it . key  }) 
    println ( map . minBy  {  it . key  }) 
}

Результат исполнения

two = TWO
one = ONE
  • Сравните размер каждой записи со значением, возвращаемым лямбда-выражением, и получите максимальную и минимальную записи.

maxWith (), minWith ()

import  java.util. *
fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    val  comparator  =  Comparator < Map . Entry < String ,  String >>  {  a ,  b  ->  a . key . compareTo ( b . key )  }
    println ( map . maxWith ( comparator )) 
    println ( map . minWith ( comparator )) 
}

Результат исполнения

two = TWO
one = ONE
  • Comparator Укажите метод сравнения, чтобы получить максимальное и минимальное количество записей.

плюс ()

fun  main ( args :  Array < String >)  { 
    val  map  =  mapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    Println ( Map . Plus ( MapOf ( "Four"  To  "FOUR" ))) 
    Println ( Map . Plus ( "Five"  To  "FIVE" )) 
    Println ( Map . Plus ( ListOf ( "Six"  To  "SIX" )) )
    println ( map  +  ( "seven"  to  "SEVEN" )) 
}

Результат исполнения

{one = ONE, two = TWO, three = THREE, four = FOUR}
{one = ONE, two = TWO, three = THREE, five = FIVE}
{one = ONE, two = TWO, three = THREE, six = SIX}
{one = ONE, two = TWO, three = THREE, seven = SEVEN}
  • Map, Pair, List<Pair>При передаче new для добавления элемента Map возвращает.
  • + Его тоже можно заменить оператором.

к списку ()

Fun  Main ( Args :  Array < String >)  { 
    Val  Map  =  MapOf ( "One"  To  "ONE" ,  "Two"  To  "TWO" ,  "Three"  To  "THREE" ) 
    Val  List :  List < Pair < String ,  String >>  =  map . toList ()
    println ( list ) 
}

Результат исполнения

[(one, ONE), (two, TWO), (three, THREE)]
  • Map<K, V>A List<Pair<K, V>>конвертировать в.

toProperties ()

import  java.util. *
Fun  Main ( Args :  Array < String >)  { 
    Val  Map  =  MapOf ( "One"  To  "ONE" ,  "Two"  To  "TWO" ,  "Three"  To  "THREE" ) 
    Val  Properties :  Properties  =  Map . ToProperties ()
    println ( properties ) 
}

Результат исполнения

{two = TWO, one = ONE, three = THREE}
  • java.util.Properties .

toSortedMap ()

import  java.util. *
Fun  Main ( Args :  Array < String >)  { 
    Val  Map  =  MapOf ( "One"  To  "ONE" ,  "Two"  To  "TWO" ,  "Three"  To  "THREE" ) 
    Val  SortedMap :  SortedMap < String ,  String >  =  map . toSortedMap ()
    println ( sortedMap ) 
}

Результат исполнения

{one = ONE, three = THREE, two = TWO}
  • java.util.SortedMap .

Метод MutableMap

getOrPut

fun  main ( args :  Array < String >)  { 
    val  mutableMap  =  mutableMapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    println ( MutableMap . GetOrPut ( "one" ,  { "DEFAULT" })) 
    println ( MutableMap ) 
    println ( MutableMap . GetOrPut ( "four" ,  { "DEFAULT" })) 
    println ( MutableMap ) 
}

Результат исполнения

ONE
{one = ONE, two = TWO, three = THREE}
DEFAULT
{one = ONE, two = TWO, three = THREE, four = DEFAULT}
  • Если запись, соответствующая указанному ключу, не существует, возвращается значение, возвращаемое лямбда-выражением.
  • Кроме того, добавляется запись со значением, возвращаемым указанным ключом и лямбда-выражением.

положить все

fun  main ( args :  Array < String >)  { 
    val  mutableMap  =  mutableMapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    mutableMap . putAll ( mapOf ( "four"  to  "FOUR" ,  "five"  to  "FIVE" )) 
    println ( mutableMap )
    mutableMap . putAll ( listOf ( "six"  to  "SIX" )) 
    println ( mutableMap ) 
}

Результат исполнения

{one = ONE, two = TWO, three = THREE, four = FOUR, five = FIVE}
{one = ONE, two = TWO, three = THREE, four = FOUR, five = FIVE, six = SIX}
  • MapPairДобавьте все коллекции с записью или как запись.

plusAssign

fun  main ( args :  Array < String >)  { 
    val  mutableMap  =  mutableMapOf ( "one"  to  "ONE" ,  "two"  to  "TWO" ,  "three"  to  "THREE" )
    mutableMap . plusAssign ( mapOf ( "four"  to  "FOUR" )) 
    mutableMap . plusAssign ( "five"  to  "FIVE" ) 
    mutableMap . plusAssign ( listOf ( "six"  to  "SIX" ))
    mutableMap  + =  "seven"  to  "SEVEN"
    println ( mutableMap ) 
}

Результат исполнения

{one = ONE, two = TWO, three = THREE, four = FOUR, five = FIVE, six = SIX, seven = SEVEN}
  • putAll() Это примерно то же самое.
  • PairОн += отличается тем, что его можно указать независимо или заменить на.

ссылка

Http://www.tellmehow.co/

Спасибо ^^

Include library collections in the past.

Часть 1: [Отличная] Интересная библиотека для Android - апрель 2017 г. для библиотеки разработчиков Android GitHub



Часть 2: [Popular] Android-библиотека, май - сентябрь (cobeisfresh) 2017 г. для Android GitHub Developer Library



Часть 3: Прекрасная библиотека Android, май - сентябрь (cobeisfresh) 2017 г. для Android GitHub Developer Library



Часть 4: [40 Вверх] Рекомендуемая библиотека Android, май - сентябрь 2017 г. для библиотеки разработчика Android GitHub



Вы следили за группой:

Https://android-arsenal.com

Http://www.tellmehow.co/

ใคร สนใจ มา соединить линию ได้ ครับ รับ จำนวน จำกัด ใคร ปัญหา ชอบ เรื่อง อะไร ใหม่ ๆ สามารถ join เข้า ได้ เลย ครับ 😁

หาก สนใจ ก็ สามารถ присоединиться к ได้ ที่ นี้ เลย ครับ. หรือ сканировать qrcode. ไป ได้ เลย

[Android Github Dev] คุณ ได้ รับคำ เชิญ ให้ เข้า ร่วม ส แคว ร์ ของ LINE
https://line.me/ti/g2/UVVDK6Z5EE
Android Developer

Спасибо, что присоединились: https://www.facebook.com/groups/883546485084033/?fref=ts Я создал группу разработчиков Android Android и библиотеку Kotlin Droidcon Github. Если есть вопросы, можете их задать. Вы можете присоединиться в приложении Telegram. Https://t.me/joinchat/IhB5KQ0aXC7ckNgjRaBaCw Присоединяйтесь к разработчикам Android и приложению Telegram сообщества библиотеки Kotlin Droidcon Github, чтобы помогать друг другу. Присоединение к ссылке:

เข้า ร่วม Строка группы: เข้า ร่วม กลุ่ม

: กล่อง จดหมาย เพื่อ ส่ง อีเมล [email protected]

Android Open Source Projects [inclusion] [SUM] [Join user groups] There is a problem with Android projects and want to give answers. What's new or want to update the robot continuously. Can join. Line: po56789 or inbox on the page, come to join, please just !!!!
Thank you

แฟน เพจ Приложение PongPloy Zone AppDev

Ссылка: https://www.facebook.com/PPAndroid-Github-Dev-Zone-170227463027435/notifications/

Приложение для изучения языков.

EN

Практика письма, чтения, Kai-ABC, это приложение. Разработан, чтобы быть простым в использовании, незамысловатым, с иллюстрациями и звуком для обучения детей четкому чтению в соответствии с тайско-английскими согласными. Практикуйтесь в написании всех 44 тайских согласных от курицы до ястреба и 26 английских согласных звуков, так как AZ позволяет легко выучить и запомнить. Это приложение подходит для тайских студентов. И иностранцы, изучающие тайский язык, могут в будущем добавить больше игр для детей.

Тайский:

ฝึก เขียน อ่าน ก ไก่ -ABC แอ พ พลิ เค ออกแบบ มา ให้ ใช้ งาน ง่าย โดย มี ภาพประกอบ พร้อม เสียง สำหรับ ฝึก ๆ ท่อง ตาม เสียงพยัญชนะ ไทย - อังกฤษ ได้ ชัดเจน ไทย ทั้ง 44 ตัว ตั้งแต่ ไก่ จนถึง ฮ นก ฮูก และ พยัญชนะ ภาษา อังกฤษ ทั้ง 26 ตัว ตั้งแต่ AZ ทำให้ ง่าย ต่อ การ เรียน รู้ และ พ พลิ เค ชั่ น นี้ เหมาะ สำหรับ นักเรียน ไทย ชาว ต่าง ชาติ ภาษา และ ต่อ ไป อาจ จะ เกม ให้ เด็ก มา สนใจ มาก ขึ้น

Скачать: Ссылка на приложение: https://play.google.com/store/apps/details?id=com.pongploydev.education.mediaapp