2016-10-21 19 views
1

私が把握しようとしている:scala.collection.Seq.groupBy()関数は順序を保持していますか?

  1. scala.collection.Seq.groupBy() preserversご注文いただいた場合。私がList((true, 2), (true, 8))を持っていて、ブール値である最初の要素でgroupByを実行すると、私はいつも2の前に2を持つtrueのリストに終わりますか?

  2. toMapと同じ質問です。意味は、私が上記のリストのtoMapを行う場合、私はいつもキーが真であるために8を持つことになるでしょう、原因8は2の後に来て、それを上書きしますか?

スカラードキュメントの実装について何も見つかりませんでした:scala doc。私は注文が保存されていることを確認するために自分のバージョンを書くかどうかを決めようとしています。

ありがとうございます!

答えて

6

行動がdocumented次のとおりです。

次 不変が成立するようにたどれるコレクションのキーからマップ:(xs groupBy f)(k) = xs filter (x => f(x) == k)

は、それが対等の条件で定義されていますを意味します。

フィルタでは、「要素の順序は保持されています」と指定されています。

したがって、指定されたとおり、順序は保持されます。

同様に、toMapは言う:

重複キーは、後にキーによって上書きされます。これは結果のマップが定義されていない中であるキー 順不同コレクションが、ある場合。

つまり、順序付けられたコレクションの最後のキーが値を提供します。

関連する問題