java - 在 Java 中克隆迭代器?

标签 java iterator

在游戏中我有一个玩家列表,我们可以这样说:

LinkedList<String> players = new LinkedList<String>();

我想让每个玩家与其他每个玩家互动,所以我写了两个嵌套循环:

Iterator<String> i1 = players.iterator();
while (i1.hasNext()) {
    String p1 = i1.next();
    Iterator<String> i2 = players.iterator();
    // But I want to do this: Iterator<String> i2 = i1.clone();
    while (i2.hasNext()) {
        String p2 = i2.next();
        System.out.println("Interact: " + p1 + ", " + p2);
    }
}

因为我只希望每对玩家交互一次,所以我想在外循环当前玩家之后的玩家开始内循环。所以我想克隆迭代器,但无法编译。

那么,我应该怎么做呢?

最佳答案

以下将执行此操作:

ListIterator<String> i1 = players.listIterator(0);
while (i1.hasNext()) {
    String p1 = i1.next();
    ListIterator<String> i2 = players.listIterator(i1.nextIndex());
    while (i2.hasNext()) {
        String p2 = i2.next();
        System.out.println("Interact: " + p1 + ", " + p2);
    }
}

它依赖于 ListIterator从给定位置开始并知道其当前位置的能力。

关于java - 在 Java 中克隆迭代器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7758202/

相关文章:

c++ - 迭代器的值

java - for循环java迭代器中的运行数

python - itertools.tee 是如何工作的,可以复制 'itertools.tee' 以保存它的 "status"吗?

arrays - 为二维数组编写迭代器

java - Spring Integration Http 休息服务

java - 使用文件对象创建文件?

java - 使用 Spark 展平嵌套 json 文档并加载到 Elasticsearch 中

c++ - 自定义迭代器指向临时对象(延迟加载)

java - 用于 Java 应用程序的 Transact-SQL 嵌入式数据库

Java 字符串值作为语句的一部分?