gpt4 book ai didi

java - 有没有办法用迭代器只删除列表中的第一个元素?

转载 作者:行者123 更新时间:2023-12-01 17:40:47 25 4
gpt4 key购买 nike

我有一个包含 1 和 2 的整数列表。在循环迭代时,我有 2 个 if block ,最后我会删除当前 List 的第一个 Integer。

我尝试使用迭代器并执行remove(),但它也删除了我可能想要保留的Integer的所有出现,即使我只想删除第一个。

这就是我的代码:

                Collections.reverse(currentPlayer);
for (Iterator<Integer> iterator = currentPlayer.iterator(); iterator.hasNext();) {
int currentWinner = iterator.next();
if (currentWinner==1) {
switch ((String) firstPlayerScore.getText()) {
case "40":
firstPlayerScore.setText("30");
break;
case "A":
firstPlayerScore.setText("40");
break;
case "0":
firstPlayerScore.setText("0");
break;
default:
int currentScore = Integer.parseInt((String) firstPlayerScore.getText());
firstPlayerScore.setText(String.valueOf(currentScore - 15));
break;
}
} else if (currentWinner==2) {
switch ((String) secondPlayerScore.getText()) {
case "40":
secondPlayerScore.setText("30");
break;
case "A":
secondPlayerScore.setText("40");
break;
case "0":
secondPlayerScore.setText("0");
break;
default:
int currentScore = Integer.parseInt((String) secondPlayerScore.getText());
secondPlayerScore.setText(String.valueOf(currentScore - 15));
break;
}
break;
}
currentPlayer.remove(0);

问题是我显然面临一些 java.util.ConcurrentModificationException 问题,因为我正在修改列表。

有什么技巧可以做到这一点吗?

最佳答案

您可以做的是,在创建迭代器之前,您可以删除索引 0 处的第一个元素并将其视为获胜者。然后你可以迭代其余的并假设他们不是赢家。

发生 ConcurrentModificationException 是因为您在迭代 Iterator 时尝试修改构成 Iterator 的底层 Collection。

                Collections.reverse(currentPlayer);

Integer winner = currentPlayer.remove(0);

Iterator<Integer> iterator = currentPlayer.iterator();

while (iterator.hasNext()) {
int nonWinner = iterator.next();

// your code
}

关于java - 有没有办法用迭代器只删除列表中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60951860/

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