scala で、メソッドがコレクション ( )toSet()
内の要素の順序を混同するのはなぜですか?ListBuffer
各要素の一意性を確保し、元の順序を維持するには、どのコレクションを使用できますか?
scala で、メソッドがコレクション ( )toSet()
内の要素の順序を混同するのはなぜですか?ListBuffer
各要素の一意性を確保し、元の順序を維持するには、どのコレクションを使用できますか?
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
メソッドは、既存のコレクションから新しいセット コレクションを構築します。この新しいセット コレクションの既定のセット実装を使用します。デフォルトのセットの実装は、ハッシュ テーブルに基づいています。ハッシュ テーブルでは、要素の順序は定義されていません。