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)