【Kotlin】Kotlin ~ 基本編 / 配列・コレクション ~

■ はじめに

https://dk521123.hatenablog.com/entry/2018/09/13/001546

の続き。
今回は、配列・コレクションについて扱う

実行環境
https://try.kotlinlang.org/#/Examples/Hello,%20world!/Simplest%20version/Simplest%20version.kt

目次

【1】配列(Array)
【2】List / MutableList
【3】Set / MutableSet
【4】Map / MutableMap
【5】Pair / Triple / data class
【6】配列・コレクションあれこれ

【1】配列(Array)

* Arrayクラスを使う
* arrayOf() で初期化

サンプル

var values:Array<Int> = arrayOf<Int>(1, 2, 3, 4, 5)
for (value in values) {
    println("value is $value")
}

【2】List / MutableList

* List : 読み取り専用
* MutableList : 読み書きOK

サンプル

val values:List<String> = listOf("Hello", "world", "!!")
for (value in values) {
    print("value is $value\n")
}

List to Array

val samples = mutableListOf<String>()

val sampleArray = samples.toTypedArray()

https://www.techiedelight.com/convert-list-to-array-kotlin/
空リスト

emptyList()

if (emptyList.isEmpty()) {
  print("empty")
}

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/empty-list.html

【3】Set / MutableSet

* Set : 読み取り専用
* MutableSet : 読み書きOK

【4】Map / MutableMap

* Map : 読み取り専用
* MutableMap : 読み書きOK

サンプル

例1:Map

val maxWordMapper = mapOf(
    0 to 5,
    1 to 10,
    2 to 15,
    3 to 20,
    4 to 50,
    5 to 100
)
var maxWord = maxWordMapper[0]

例2:mutableMapOf

private val wordMap = mutableMapOf<Int, String>()

wordMap[0] = "Hello"
wordMap[1] = "World"

【5】Pair / Triple / data class

Pair

* Kotlin特有のKey-Value型のクラス
* 2つの値を返す

Triple

* 3つの値を返す

data class

* 4つ以上の値を返す

サンプル

var keyValue = Pair("hello", 1)
var key = keyValue.first
var value = keyValue.second
println("Results are $key / $value")
// Results are hello / 1

参考文献

https://qiita.com/sdkei/items/2d5dab51b53975286945

【6】配列・コレクションあれこれ

1)ランダムな配列・コレクションの生成

* shuffled() を使う

サンプル

val values = listOf("Hello", "world", "Mike", "!!")
val randumValues = values.shuffled()
for (value in randumValues) {
    println("value = $value")
}

// [出力結果例(毎回変わる)]
// value = Hello
// value = Mike
// value = world
// value = !!

関連記事

Kotlin ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2018/09/13/001546
Kotlin ~ 基本編 / スコープ関数 ~
https://dk521123.hatenablog.com/entry/2020/07/19/000000
Kotlin ~ 基本編 / クラス ~
https://dk521123.hatenablog.com/entry/2020/07/23/000000