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

如何在Java中制作迭代器的副本?

斜烈
2023-03-14
问题内容

我们有一个元素列表,并且有一个非常简单的碰撞检测,可以将每个对象与其他每个对象进行检查。

该检查是可交换的,因此为了避免重复两次,我们将在C ++中执行此操作:

for (list<Object>::iterator it0 = list.begin(); it0 != list.end(); ++it0)
{
    for (list<Object>::iterator it1 = it0; it1 != list.end(); ++it1)
    {
        Test(*it0, *it1);
    }
}

这里的关键是副本

it1 = it0

您将如何用Java编写此代码?


问题答案:

您不能复制Java迭代器,因此没有它们就必须这样做:

for(int i=0; i<list.size(); i++){
    for(int j=i; j<list.size(); j++){
        Test(list.get(i), list.get(j));
    }
}


 类似资料:
  • 我得到了同样的错误。这有可能吗?我真的更希望不执行stream.foreach()并传递一个消费者。 编辑:对我来说,不要复制元素是很重要的。

  • 问题内容: 我想知道如何制作一个深复制。 我知道可以使用IOUtils软件包来完成,但是如果可能的话,我想避免使用它们。有谁知道替代方法? 问题答案: InputStream是抽象的,不会公开(也不公开其子级)内部数据对象。因此,“深度复制” InputStream的唯一方法是创建ByteArrayOutputStream,然后在InputStream上执行read()之后,将此数据写入()到By

  • 问题内容: 什么是迭代器和集合?这两个有关系吗? 接口迭代器是否只预定义了这些方法名称,还是用户定义了这些方法名称?下面的这四行实际上说明了什么? 谢谢。我正在看一本藏书。 问题答案: 顾名思义,Java集合是事物的集合。如果您不知道该单词,请在字典中查找。 有很多类型的集合。以集合的数学概念为例。您可以将任意事物放入集合中,但是永远不会包含同一事物。在集中的东西是没有顺序的,那就是你不能说 A

  • 问题内容: 在我的应用中,我想用其他名称保存某个文件的副本(我从用户那里得到) 我真的需要打开文件的内容并将其写入另一个文件吗? 最好的方法是什么? 问题答案: 要复制文件并将其保存到目标路径,可以使用以下方法。 在API 19+上,你可以使用Java自动资源管理:

  • 问题内容: 这个问题已经在这里有了答案 : 9年前关闭。 可能重复: 如何克隆ArrayList并克隆其内容? 试图复制一个ArrayList。基础对象很简单,包含Strings,ints,BigDecimals,Dates和DateTime对象。如何确保对新ArrayList所做的修改不会反映在旧ArrayList中? 干杯,P 问题答案: 在添加对象之前先对其进行克隆。例如,代替 假设已正确覆

  • 问题内容: 我正在寻找一个类,可以在其中重写方法来完成工作,并像迭代器一样返回结果。像这样: 这主要将用于蒙特卡洛模拟之类的事情,但我不想每次都要处理设置线程池和管理返回线程的问题。我开设了自己的班级, 希望能 完成这个任务,但是我对此没有足够的信心,以为我会检查是否已经存在这样的东西。 编辑:明确地说,我希望它在每个工作方法返回后继续在后台运行并对结果进行排队,直到完成所有试验为止。因此,下一个