首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何多次迭代队列,直到在Java中删除所有元素?

问如何多次迭代队列,直到在Java中删除所有元素?
EN

Stack Overflow用户
提问于 2022-12-04 01:51:52
回答 1查看 27关注 0票数 0

我已经创建了一个包含名为Card的自定义对象的队列。我想遍历队列,向用户显示每一张卡片。如果用户希望该卡再次出现,则必须在显示所有其他卡后再次显示该卡(因此,该卡必须到达队列的末尾)。这必须无休止地重复,直到用户决定不能再次显示卡。

我怎样才能正确地做到这一点?

当用户希望卡再次出现时,我尝试在队列末尾添加该卡,使用:

代码语言:javascript
复制
learningQueue.add(this.card);

但当我用:

代码语言:javascript
复制
cardIterator.next();

我得到了一个java.util.ConcurrentModificationException。

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 14:31:04

如果使用Iterator,则不应修改对象卡。否则,它将抛出ConcurrentModificationException。你可以阅读源代码来解决这个问题。

我不建议你用Iterator。既然使用了队列,为什么不使用Queue.peek()、,Queue.poll()和Queue.add()。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74672303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档