Коллекция Котлина
В 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, но был добавлен MutableIterable
interface, чтобы различать, доступен ли он для записи или нет.
ListMutable
Метод изменения состояния коллекции не определен для интерфейса без таких как.
Эти интерфейсы не являются неизменяемыми, они предназначены только для чтения.
Разница между только для чтения и неизменяемым
Получил указание в Твиттере и я исправлю (я вас совершенно не понял, спасибо).
Котлин List
arrow 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.List
etc) из Kotlin некоторые типы автоматически преобразуются в тип Kotlin.
Например, java.util.Iterator
type 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
Свойства, определенные для или.- Сохраняется
IntRange
object, представляющий диапазон индекса коллекции. indices
Toothindex
множественная форма.
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
И среднее значение каждого элемента на фиг.- Этот метод можно использовать только для типов, аргументы
Iterable
type которых вычислимы в числовом виде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]
Iterable
Concatenate и вернуть возвращенные лямбда-выражения.
сплющить ()
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
верните его. true
element, условие которого удовлетворяется, устанавливается наfirst
,false
, а элемент, который становится условием, устанавливается наsecond
set.
уменьшать ()
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>>
AMap<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]
- Верните
Iterable
sum двух элементов иSet
return.
разархивировать ()
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>>
APair<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] []
- Возвращает пустую коллекцию, если тип коллекции
null
acceptable, аnull
it действительно. - В противном случае верните себя как есть.
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
.- Возвращаемое значение связано с
List
original,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
возвращается,List
it последовательно получает элементы из хвоста, заполняет их и возвращает.
Методы в 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]
- Для каждого элемента вызывается лямбда-выражение.
- И он возвращается к
Iterable
one, возвращаемому в каждом вызове лямбда-выражения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]
- Для каждой записи вызывается лямбда-выражение.
- Значение, возвращаемое лямбда-выражением, равно
List
filled и возвращается. map()
Isnull
it, поскольку это тот случай, который возвращаетсяList
pack в.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>
AList<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
Он+=
отличается тем, что его можно указать независимо или заменить на.
ссылка
- Kotlin - rev - решение / ключевое слово - for - kotlin.md at master · yyYank / kotlin - rev - решение
- Дженерики - язык программирования Котлин
- Https://qiita.com/opengl-8080/items/36351dca891b6d9c9687. от .
@ opengl-8080
Спасибо ^^
Include library collections in the past.
Часть 2: [Popular] Android-библиотека, май - сентябрь (cobeisfresh) 2017 г. для Android GitHub Developer Library
Часть 3: Прекрасная библиотека Android, май - сентябрь (cobeisfresh) 2017 г. для Android GitHub Developer Library
Вы следили за группой:
ใคร สนใจ มา соединить линию ได้ ครับ รับ จำนวน จำกัด ใคร ปัญหา ชอบ เรื่อง อะไร ใหม่ ๆ สามารถ 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