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