2017-01-27 5 views
-1

도움이 필요합니다. 지도 투표로 미니 게임 플러그인을 만들었으며 그 방법을 모르겠습니다.부킷지도 투표

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

투표가 닫히고 서버가지도를 선택한다고 가정 해 봅시다. 어느 것? 2 개의지도가 같은 가장 큰 num을 가질 때. 투표 수?

감사합니다. eNcoo.

+0

투표가 끝나면 정수가 내림차순으로 정렬됩니다. 그런 다음 [0] (인덱스 0)을 선택하기 만하면됩니다. 이것은 (만약 내가 맞다면) 두 개 또는 그 이상의 카운트가 동일한 경우 임의의 기회를 갖습니다. –

답변

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())); 

또는 최신 투표

추적을 각 세계에 대한 가장 오래된 투표 또는 최신 투표의 타임 스탬프는 또한 동점을 없애기 위해 사용될 수 있습니다. 예를 들어, 가장 오래된 투표를 추적하면 (연계 집합에 대한) 첫 번째 세계 투표에 우선 순위가 부여되는 반면, 가장 최근의 투표는 투표 된 마지막 세계에 우선합니다. 나는 이것이 실용적이며 운동으로서 만 언급 할 지 확신하지 못한다.