我已经创建了一个包含名为Card的自定义对象的队列。我想遍历队列,向用户显示每一张卡片。如果用户希望该卡再次出现,则必须在显示所有其他卡后再次显示该卡(因此,该卡必须到达队列的末尾)。这必须无休止地重复,直到用户决定不能再次显示卡。
我怎样才能正确地做到这一点?
当用户希望卡再次出现时,我尝试在队列末尾添加该卡,使用:
learningQueue.add(this.card);但当我用:
cardIterator.next();我得到了一个java.util.ConcurrentModificationException。
发布于 2022-12-04 14:31:04
如果使用Iterator,则不应修改对象卡。否则,它将抛出ConcurrentModificationException。你可以阅读源代码来解决这个问题。
我不建议你用Iterator。既然使用了队列,为什么不使用Queue.peek()、,Queue.poll()和Queue.add()。
public void test() {
Queue<User> userDeque = new ArrayDeque<>();
userDeque.add(new User(1L, "nancy"));
userDeque.add(new User(2L, "mike"));
userDeque.add(new User(3L, "hopkins"));
while (userDeque.peek() != null) {
User poll = userDeque.poll();
System.out.println(poll);
// condition
if (poll.getId() < 2) {
userDeque.add(poll);
}
}
}
@Data
@AllArgsConstructor
public class User {
private Long id;
private String name;
}https://stackoverflow.com/questions/74672303
复制相似问题