当前位置: 首页 > 面试题库 >

克隆Java中的迭代器?

伊锦
2023-03-14
问题内容

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

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的能力从给定位置开始,并且还知道其当前位置。



 类似资料:
  • 众所周知,是无法修复的(有关更多信息,请参见本问题中的讨论)。 关于替代方案和“我如何做得对”的最后一个问题已经有几年的历史了: null 类将实现的某种接口:. 深度复制。如果的istance引用的实例,则应引用新的. 复制到指定的目标:. 多态复制:如果扩展,则应将的所有属性从复制到。 当然,我可以自己实现所有这些,但是有标准接口不是很合理吗?还是我漏掉了什么? 我的上下文的一点背景。我经常使

  • 问题内容: 我一直在寻找一些讲解Java的教程,但没有获得任何良好的链接,无论如何,Stack Overflow变得越来越明显。 我想知道以下内容: 意味着我们可以通过实现接口来获得对象的克隆或副本。这样做的优点和缺点是什么? 如果对象是复合对象,则如何进行递归克隆? 问题答案: 你应该了解的第一件事-不要使用它。 正确地进行克隆非常困难,而且付出的努力是不值得的。 而不是使用其他一些选项,例如或

  • 本文向大家介绍深入理解Java中的克隆,包括了深入理解Java中的克隆的使用技巧和注意事项,需要的朋友参考一下 前言 Java克隆(Clone)是Java语言的特性之一,但在实际中应用比较少见。但有时候用克隆会更方便更有效率。 对于克隆(Clone),Java有一些限制:       1、被克隆的类必须自己实现Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例

  • 第一步: 进入Github克隆界面 如果我们想使用Github上的开源项目,可以使用Android Studio直接下载项目代码。 操作步骤: 第1步: 进入Github克隆界面 三个路径: 欢迎界面: Check out project from Version Control —> Github 菜单栏: File —> New —> Project from Version Control

  • 问题内容: 有没有一种方法可以克隆的实例而无需将其字符串化并重新解析结果? 浅表副本是可以接受的。 问题答案: 使用构造函数和方法。

  • 问题内容: 是否存在Java实用程序,该实用程序可以执行以下方法:不仅复制地图对象(如in 类),还复制地图元素? 问题答案: 元素中提到的其他对象呢?您想要克隆多深? 如果您的地图元素没有任何深层引用和/或所有内容都是,则可以将地图序列化为,然后立即将其反序列化。 唯一的替代方法是手动执行。