DEV Community

kaede
kaede

Posted on • Edited on

Kotlin 基礎 Part 3 -- 配列をひとつひとつ処理する

Kotlin の共通仕様

回している中身は it でアクセスできる


元の配列を書き換えない処理

実行結果を新しい変数に入れて、それを使う。


forEach

配列の中身を全て回してひとつひとつ処理を動かす
返り値はないので、結果を変数に入れることはできない。

numbers.forEach {number->
    println("This Unit Cost is: ${number + 440} yen.")
}
Enter fullscreen mode Exit fullscreen mode
This Unit Cost is: 540 yen.
This Unit Cost is: 640 yen.
This Unit Cost is: 740 yen.
Enter fullscreen mode Exit fullscreen mode

map

https://qiita.com/watame/items/87b7923d4f3f59ffb653#map

配列一つ一つに処理して,
結果を配列で返す。
イテレーション(反復される単位) は it で表現できる。

val numbers = listOf(100, 200, 300)
val numbersWithDeliveryCost = numbers.map { it + 440 }
println(numbersWithDeliveryCost)
Enter fullscreen mode Exit fullscreen mode

[540, 640, 740]

商品に配送料を追加する例。

val numbers = listOf(100, 200, 300)
numbers.map {number->
    println("This Unit Cost is: ${number + 440} yen.")
}
Enter fullscreen mode Exit fullscreen mode
This Unit Cost is: 540 yen.
This Unit Cost is: 640 yen.
This Unit Cost is: 740 yen.
Enter fullscreen mode Exit fullscreen mode

商品ごとに配送料を通知する例。

forEach と同じく関数に書いておけば、即時実行される。
なので return を書かずに配列の中身一つ一つで処理を走らせるのにも使える。
必ず走らせる場合は forEach の方が望ましい?要検証


filter

配列をひとつひとつ条件に照らし合わせて
結果が true だったものをまとめた配列を返す

    val numbers = listOf(100, 200, 300)
    val numbersUnder300 = numbers.filter {number->
        number < 300
    }
    println(numbersUnder300)
Enter fullscreen mode Exit fullscreen mode

[ 100, 200 ]

300 円未満の商品だけ絞り込む例。


find

https://pouhon.net/kotlin-collection-method/1434/

内部の条件でみつけた最初の一つを結果にいれる

ひとつしか返ってこない。

    val numbers = listOf(100, 200, 300)
    val firstNumbersUnder300 = numbers.find {number->
        number < 300
    }
    println(firstNumbersUnder300)
Enter fullscreen mode Exit fullscreen mode

100

300 未満は 100 と 200 があるが
最初にヒットした 100 しか返ってこない。


sorted

https://kotlinlang.org/docs/collection-ordering.html#natural-order

元の配列をソートしたインスタンスを作成する。

    val numbers = listOf(9,5,2,3,100,5,1)
    val sortedNumbers = numbers.sorted()
    println(sortedNumbers)
Enter fullscreen mode Exit fullscreen mode

[1, 2, 3, 5, 5, 9, 100]

// TODO 日付


元の配列を書き換える

配列に対して実行するものなので、元の配列が書き換わる。
普通に listOf で作った配列には使えない。
専用の書き換えられるリストである mutableListOf で
作った配列にのみ使用できる。

sort

https://pouhon.net/kotlin-collection-method/1434/

    val numbers = mutableListOf(9,5,2,3,100,5,1)
    numbers.sort()
    println(numbers)
Enter fullscreen mode Exit fullscreen mode

[1, 2, 3, 5, 5, 9, 100]

元の配列自体を書き換えられる。

Top comments (0)