kagabu雑記

主にandroid関連と雑記

コレクションに実装されている関数をほんの少しだけ見た件

どうも、りゃんじえです。(kGbから名前を変更しました)

 

最近、Android studio 触ってたらkotlinわからん事あったので、復習がてら入門書を読んでいます。

『やさしいkotlin入門』という本です。

 

やさしいKotlin入門

やさしいKotlin入門

 

この本に関するあれこれはまた書きたいと思っていますが、今はいち早くkotlinを勉強したいということで、単純に気になったことをメモとして書いていきたいと思います。

 

上記の本は、説明を文章ベースで行なっていたため、私としてはわかりやすかったです。

それぞれの機能や概念に関して、広く説明していくスタイルの書籍で、基礎の全容を知るにはいい本なのかもれません。

しかし、内容が薄くなれば、勿論、応じ気になるところ、もっと知りたくなる箇所がいっぱいあるわけです。(そういう意味では調べる習慣はつくかもしれない)

そこで、最近気になった箇所を調べたので、メモしようというわけです。そうですただの自己中メモです。すんませんすんません。

 

コレクション(map,list....)の類にはにforeachやfilterといった関数が備わっており.....

ふんふんそんな機能があるのね、ふんふん、だからこんな風に省略できるのねぇ.....

あ、その関数の説明ないんだ☺️.......

関数型のこと知らないし、他にどんな機能があるんだろう......はい調べましたlittle bit。

箇条書きでパパパっと書いていきます。 

 

抽出

・filter 

これは勉強している書籍にも一応記述があった。

true要素を返したものだけ抽出する。

 

val originalMap = mapOf("key1" to 1, "key2" to 2, "key3" to 3)

val filteredMap = originalMap.filter { it.value < 2 }

println(filteredMap) // {key1=1}
// original map has not changed
println(originalMap) // {key1=1, key2=2, key3=3}

 

codeは以下のページを参照しました。(参照したと言っても、全ての関数をこのページから乗せたとは言ってない......)

kotlinlang.org

 ちなみにfilterNotはfalseを返したものだけです。

 

・maxby, minby

最大値、最小値を返す。

arrayOf(1,2,3).maxBy{...}

 

・take, takeList

指定した数だけ要素を抽出する。

arrayOf(1,2,3,4,5,6,7,8,9).takeList(4)

→9,8,7,6

 

処理

・forEach, forEachIndexed

要素に対して順繰りに関数の実行を行う。

 

並び替え

・sort 

並び替える。

arrayOf(9,8,7).sort()

→7,8,9

 

・sortBy

帰ってきた要素で並び替える。

arrayOf("あい","う","えおか").sortBy{p -> p.length()}

→1,2,3が帰ってくるはずなので、"う","あい","えおか"となる。

 

判定

・all, any

全て、もしくは一定の条件に一致すればtrue。

arrayOf(1,2,3,4).all{p -> p < 10}

 

合成

・plus

二つのリストをくっつける

arrayOf(1,2,3,4).plus(arrayOf(5,6,7))

 

・zip

二つのリストをペアにして返す。

arrayOf(1,2,3).zip(arrayOf("あ","い","う"))

 

 書いてて思ったこと

仕組みがわからなかったら調べれば一発で出てくる。

(=自分でまとめるのはなんなら自己満アウトプット)