大家讲道理2017-04-18 10:09:02
リーリー
shuffle
はリストの順序をスクランブルし、Random
を使用してインデックス (乱数) を生成し、i-1
の要素をランダムなインデックスと交換します。 collection.size()
回ループします。
PHP中文网2017-04-18 10:09:02
この種の問題については、ソース コードを見てください。
リーリー上記は JDK のソース コードであり、コア メソッドはこの shuffle
ですが、いくつかのコメントが削除されています。
まずセット内の要素の数を取得します。それが 5 未満であるか、RandomAccess
インターフェイスを実装している場合は、再度ループし、セット内の 2 つの隣接する要素の位置をランダムに交換します。RandomAccess
はマークです。インターフェイスが実装されている場合、このインターフェイスがあるということは、配列と同様に高速なランダム アクセス操作をサポートすることを意味します。
5 つ以上の要素があり、RandomAccess
インターフェイスが実装されていない場合は、配列に変換され、さらにループして、セット内の 2 つの隣接する要素の位置をランダムに交換します。 、そして最後に配列を元の list
Medium に戻します。
大家讲道理2017-04-18 10:09:02
これは、ほとんどのコレクションの「近似的」ランダムシャッフルです。原理は非常に単純で、乱数ジェネレーターに基づいており、コレクションの要素の順序とランダムに相互作用します。