3

scala で、メソッドがコレクション ( )toSet()内の要素の順序を混同するのはなぜですか?ListBuffer

各要素の一意性を確保し、元の順序を維持するには、どのコレクションを使用できますか?

4

1 に答える 1

12

traversableのサブクラスであるset抽象化には、内部に保持される要素の順序に関する保証がないためです。

A traversable class might or might not have two properties: strictness and orderedness. Neither is represented as a type.
 ...
 If the class is not ordered, foreach can visit elements in different orders for different runs (but it will keep the same order in the same run).'

より正確には、要素が「マングル」される理由について:toSetメソッドは、既存のコレクションから新しいセット コレクションを構築します。この新しいセット コレクションの既定のセット実装を使用します。デフォルトのセットの実装は、ハッシュ テーブルに基づいています。ハッシュ テーブルでは、要素の順序は定義されていません。

于 2011-09-19T19:21:35.110 に答える