2016-12-29 4 views
1

私が抱えている問題は、今や毎回表示されていて、かなり迷惑です。複数のarraylistsを追跡する

私は2つのArrayListを持っている:
*名前
の一つキープトラック *これらの名前は

を使用している回数の「カウンター」の一つの維持トラック問題: それぞれにカウンター「接続」名前は異なる可能性があります。私はそれらに接続されている最低のカウンタを持つ6つの名前を選択したいと思います。最も低いカウンターが接続された7つ以上の名前がある場合、選択をランダムに保ちながら、これをどうやって行うのですか?

info: 2人のarraylistsは、同じランダムな種子でシャッフルされることによって "接続"されます。 ランダムにシャッフルされている理由は、最初のドロー(毎日5回、1日に1回)がすべてカウント0で始まるからです。アーラリストをシャッフルすることで、選択がランダム化されていることを確認できます。

これはあなたにとって理にかなっていると思います。あなたの記述があまり言い表されていないか、何かを理解することに問題がある場合は、遠ざかります:)

+1

いくつかのコードを追加した方がより明確になるかもしれません。 – shmosel

+1

関連するデータを2つの別々のオブジェクトに保存する代わりに、1つのオブジェクトに配置します。これがオブジェクト指向プログラミングの仕組みです。名前フィールドとカウンタフィールドを持つクラスを作成し、そのクラスのインスタンスの配列を作成します。コンパイラと、 'hashCode()'と 'equals()'の実装が必要です。使用するコレクションに応じて実装されます。しかし、関連するすべてのデータをまとめることから始めます。 – RealSkeptic

+0

私はこれを代わりにやろうとします:)ありがとう! –

答えて

3

複数の配列を使用しないでください。名前とカウンタを格納するクラスCountedNameを使用してください。次に、格納されたcountに基づいて注文するカスタムコンパレータを使用して、それらの配列を単純に並べ替えることができます。

+0

ああ、これはかなり意味がある。私はこれを試す方法を考え出す:)ありがとう! –

0

変数として名前とカウンタを含むオブジェクト(クラス)を作成することができます。これらのオブジェクトを1つの配列に格納し、必要に応じてシャッフルできます。

1

2つの別個の配列/リストを作成するのではなく、名前をキーとして保存して値としてカウントする1つのハッシュマップを維持し、カスタマイズされたロジックをカウンタに増減させることができます。

関連する問題