2017-01-27 16 views
-1

私は助けが必要です。 マップ投票でミニゲームプラグインを作成しましたが、その方法はわかりません。ブキットマップ投票

HashMap<World, Integer> votes = new HashMap<World, Integer>(); 

投票が終了し、サーバーがマップを選択しているとします。どれ? 2つのマップが同じ最大のnumを持つときはどうなりますか?票の?

助けてくれてありがとう、eNcoo。

+0

投票が終了するとすぐに、あなたのInteger降順で注文します。次に、[0](Index Zero)を選択するだけです。これは(私が正しいならば)2人以上が同じ数を持っているならランダムなチャンスを持つでしょう。 –

答えて

2

タイブレーカー投票

別の投票を持っていますが、同等の高得点でトップの世界への選択肢を制限します。

ランダムタイブレーカ

以下に示すようなタイ、破壊するために乱数発生器を使用して:古い

Map<World, Integer> votes = new HashMap<>(); 

... 

// Get list of entries and sort descending by value 
List<Entry<World, Integer>> entries = new ArrayList<>(votes.entrySet()); 
Collections.sort(entries, (e1,e2) -> -e1.getValue().compareTo(e2.getValue())); 

// Collect top scoring worlds 
List<World> topWorlds = new ArrayList<>(); 
int highScore = entries.get(0).getValue(); 
for (Entry<World,Integer> e : entries) 
    if (e.getValue() == highScore) 
     topWorlds.add(e.getKey()); 
    else 
     break; 

// Pick one at random 
World pick = topWorlds.get(new Random().nextInt(topWorlds.size())); 

または最新の投票

追跡それぞれの世界で最も古い投票または最新の投票のタイムスタンプは、ネクタイを破るために使用することもできます。例えば、最も古い投票を追跡することは、第1世界の投票に優先順位を与え、最新の投票は投票された最後の世界を優先する。私はこれが実用的であり、それを運動としてのみ言及するかどうかはわかりません。