diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index f6508bdaf..7d03c7e0a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -1022,7 +1022,7 @@ public class ArenaLogic { String key = rank.getKey(roomId); int size = 4; - HashMap result = new HashMap<>(size); + Map result = new LimitedSizeMap<>(size); SArenaSetting arenaSetting = SArenaSetting.getSArenaSetting(); int[][] interval = arenaSetting.getInterval(); @@ -1035,7 +1035,9 @@ public class ArenaLogic { if (range == null || range.isEmpty()){ continue; } - for (String id : range) { + List list = new ArrayList<>(range); + Collections.shuffle(list); + for (String id : list) { int uid = Integer.parseInt(id); if (uid == user.getId() || result.containsKey(uid)){ continue; @@ -1045,7 +1047,9 @@ public class ArenaLogic { continue; } result.put(uid, personInfo); - break; + if (result.size() == size){ + break; + } } } // 长度不足,走顺位排名