0

コードのヘルプはまだ探していません。アドバイスだけです。

私は、テキスト ファイルの入力を受け取り、すべてのチームの毎週の試合をスケジュールするスケジューラを考案しています。私はこれを機能させており、結果を保持するために拡張することを検討しています。現時点では、すべてのチームをリストに読み込んでいます。Collections.rotate を使用してリストをローテーションし、フィクスチャをランダム化します。

チームと勝利数を保持するためにマップを使用することを考えていましたが、回転はマップでは機能しないようです。私が見逃している同様の機能、または見落としている機能はありますか?

4

3 に答える 3

3

マップ自体を回転させたくはありませんが、マップのキーのビューを回転させたいようです。

したがって、疑似コードでは、次のようなことができます

//make a copy of the keys of the map
List keys = new ArrayList(yourmap.keys())
Collections.rotate(keys)
//iterate over the keys of the map in the new rotated order
for key in keys:
    Object value = yourmap.get(key)
    // do something with this value
于 2013-07-11T14:33:33.317 に答える
2

MapJDK には、3 つの主な、特殊化されていないインターフェイスの実装があります。

  • HashMap注文されていない - それはあなたを助けません
  • TreeMapいくつかのコンパレーターに基づいて注文されます - おそらくユースケースに適応するのは簡単ではありません
  • LinkedHashMap広告掲載順またはアクセス順のいずれかで並べ替えられます

あなたの場合、LinkedHashMapusing アクセス順序を使用できます (パラメーターaccessOrderを に設定しtrueた特別なコンストラクターを使用して作成します)。アイテムの 1 つにアクセスするたびに、マップの末尾に自動的に並べ替えられます。完全な反復サイクルでは、順序は変更されません。

于 2013-07-11T14:31:35.677 に答える