gpt4 book ai didi

java - 执行此操作的最有效方法

转载 作者:行者123 更新时间:2023-12-01 22:33:39 25 4
gpt4 key购买 nike

我目前正在使用 Bukkit API,但这与一般 Java 有更多关系,所以我在这里询问。我有两个 HashMap 来存储数据,并且需要能够比较两者。

public HashMap<Scoreboard, ArrayList<PlayerScore>> lastList = new HashMap<Scoreboard, ArrayList<PlayerScore>>();
public HashMap<Scoreboard, ArrayList<PlayerScore>> currentList = new HashMap<Scoreboard, ArrayList<PlayerScore>>();

我可以使用 while 循环进行迭代,这是可行的,但是这样做有一个问题,因为我必须在循环中迭代另一个 ArrayList,并且由于有两个 HashMap ,所以我最终总共做了 4 个 HashMap 。 .这是我当前的代码:

    public void remove(Scoreboard board) {
Iterator<Entry<Scoreboard, ArrayList<PlayerScore>>> lastIt = lastList.entrySet().iterator();
Iterator<Entry<Scoreboard, ArrayList<PlayerScore>>> currentIt = currentList.entrySet().iterator();
while (lastIt.hasNext()) {
System.out.println("dbg1");
Entry<Scoreboard, ArrayList<PlayerScore>> nextLast = lastIt.next();
if (nextLast.getKey().equals(board)) {
System.out.println("dbg2");
while (currentIt.hasNext()) {
Entry<Scoreboard, ArrayList<PlayerScore>> nextCurrent = currentIt.next();

ArrayList<PlayerScore> lastArray = nextLast.getValue();
ArrayList<PlayerScore> currentArray = nextCurrent.getValue();

Iterator<PlayerScore> lastArrayIt = lastArray.iterator();
Iterator<PlayerScore> currentArrayIt = currentArray.iterator();
while (lastArrayIt.hasNext()) {
System.out.println("dbg3");
PlayerScore nextCurrentArray = currentArrayIt.next();

while (currentArrayIt.hasNext()) {
System.out.println("dbg4");
if (!lastArray.contains(nextCurrentArray)) {
System.out.println("dbg5");
board.resetScores(nextCurrentArray.getString());
lastArrayIt.remove();
currentArrayIt.remove();
break;
}
}

break;
}

break;
}
}

break;
}
}

我知道,这很困惑,但我真的不知道还能做什么。 while 循环执行得太多,以至于服务器控制台只充满了“dbg4”,因为它的输出速度太快了。这也会导致服务器崩溃。

有人知道更好的方法吗?

最佳答案

您不需要迭代 HashMap 。你可以这样做:

ArrayList<PlayerScore> lastArray = lastList.remove(board);
ArrayList<PlayerScore> currentArray = currentList.remove(board);

关于java - 执行此操作的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com