From 707fc9b22ff3dc7dcf480265b8d7689c616b2b3b Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Mon, 19 Feb 2024 17:43:03 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=9E=E6=8A=80=E5=9C=BA=E9=87=8D=E5=86=99?= =?UTF-8?q?=E5=85=AD=E7=89=88=EF=BC=8C=E4=BF=AE=E6=94=B9=E5=AF=B9=E6=89=8B?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E6=9C=BA=E5=88=B6=EF=BC=8C=E5=B0=BD=E9=87=8F?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E7=9C=9F=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/arena/ArenaLogic.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) 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; + } } } // 长度不足,走顺位排名