Useful Utility Classes
Sorted
Sorting
- Int,Longのような型は早くなる
- 独自の型は遅くなる
Random
Random
Thread Safe ではある
ThreadLocalRandom
速い
Collection
Seq#map
速い
Set#map
遅い
ハッシュコードとかが原因
construct Seq
Seq()
List()
1 :: Nil
new ::(1, Nil)
Scala language features
Call by Name
- 遅延評価
- 速い
implicit Class
- トップレベルに定義できない
value-Class
- AnyValを継承
- public val フィールドを一つだけコンストラクタとするクラス
- フィールドには、val、var、trait、class、objectは、定義できない
- def はいくつもOK
- コンパイル時には存在するが、ランタイム時には型が消える
- val フィールドの型になる
- 汎用トレイト(universal trait)のみ拡張することができる
汎用トレイト(universal trait)
- Anyを継承する
- メンバとしてdefをもつ
- 初期化を行わない
https://docs.scala-lang.org/ja/overviews/core/value-classes.html
不変コレクション
- コレクション要素の追加、削除、更新を模範した演算は提供されるが、全ての場合に置いて演算は新しいコレクションを返し、古いコレクションはイミュータブルである。