Java 中的迭代器

2023-12-08

什么是迭代器和集合? 这两者有什么关系吗?

// the interface definition
Interface Iterator {
    boolean hasNext();
    Object next(); // note "one-way" traffic
    void remove();
}

// an example
public static void main (String[] args){
    ArrayList cars = new ArrayList();

    for (int i = 0; i < 12; i++)
        cars.add (new Car());

    Iterator it = cats.iterator();

    while (it.hasNext())
        System.out.println ((Car)it.next());
}

接口迭代器是否单独预定义了这些方法名称,还是由用户定义的? 下面这四行实际上说明了什么?

cars.add (new Car());
Iterator it = cats.iterator();
while (it.hasNext())
    System.out.println ((Car)it.next());

谢谢。我正在浏览一本收藏书。


正如其名称所示,Java 集合是事物的集合。如果你不认识这个词,就查字典。

收藏有很多种类型。以集合的数学概念为例。您可以将任意事物放入一个集合中,但它永远不会多次包含相同的事物。集合中的事物没有顺序,也就是说你不能说A在B之前。另一种类型的集合是列表。列表可以多次包含相同的内容,并且列表中内容的顺序很重要。

所有这些集合的共同点是它们都包含一些东西,这些东西在 Java 中被称为elements。当你想知道某个集合中有哪些东西时,你迭代集合,这只是集合的另一个术语正在经历所有元素。这就是一个Iterator做。它基本上从集合的开头开始,您可以随时询问是否有下一个元素(hasNext()),如果有,您可以访问该元素(next()),直到迭代完集合中的所有元素。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中的迭代器 的相关文章

随机推荐

  • Pro AngularJS - 你能帮忙解释一下这段代码吗?

    我正在读 Apress 写的一本名为 Pro AngularJS 的书 我只是想确保我理解所有代码 但我对下面的代码有点困惑 下面是书中的一个自定义过滤器 它接受 2 个参数 数据数组和属性名称 在书中 属性名称是数据中的类别键 设置它是为
  • gcc 中类型的非常量引用初始化无效,但 Visual Studio 中无效

    我有一些代码 其中 IInterface 是一个抽象类 我正在写这个 IInterface q InterfaceImpl 并在 Visual Studio 2008 中编译它并且运行良好 然后我将它移植到 gcc 项目中 突然出现这个错误
  • SQL Server - 在 WHERE 子句中使用 CASE

    我想用CASE in WHERE子句 但它返回错误 我可以在 where 子句中使用 CASE 吗 或者如何解决它 谢谢 SELECT FROM hris leave dbo tbl act inner join hris leave db
  • 如何用 C 语言按行块处理文本文件?

    我正在用 C 编写一个程序 该程序处理一个文本文件并跟踪每个唯一的单词 通过使用一个具有该单词的 char 数组和其出现次数的计数的结构 并将该结构存储到数据结构中 然而 作业中包含这样的内容 整个 txt 文件可能非常大 无法保存在主内存
  • 什么是“<调用>d__40”?

    使用 Powershell System Management Automation Cmdlet Invoke 返回类型的对象
  • 单击 HTML5 数据列表选项时执行操作

    我正在使用一个
  • 改变 CGRect (或任何结构)?

    我在我的代码中做了很多这样的事情 self sliderOne frame CGRectMake newX 0 self sliderOne frame size width self sliderOne frame size height
  • 卷积神经网络输出所有标签的相同概率

    我目前正在 MNIST 上训练 CNN 随着训练的进行 输出概率 softmax 给出 0 1 0 1 0 1 初始值不统一 所以我不知道我是否在这里做了一些愚蠢的事情 我只训练了15步 只是为了看看训练进展如何 尽管这个数字很低 但我认为
  • Swift:无法以编程方式编辑自定义表格单元格的属性

    我正在尝试更改自定义表格单元格内视图的颜色 并且我有一个可以使用的出口 我可以更改此视图的其他属性 例如 isHidden but backgroundColor似乎不起作用 知道我做错了什么吗 UIColor 名为 绿色 适用于应用程序的
  • 如何在 swift 中将双精度型转换为字节数组?

    我知道如何在java中做到这一点 参见here 但我找不到 java 的 ByteBuffer 的快速等效项 因此找不到它的 putDouble double value 方法 基本上 我正在寻找这样的函数 typealias Byte U
  • 有没有办法在每个页面上打印网页页眉/页脚?

    根据我的研究 似乎我想做的事情是不可能的 但以防万一发生了变化 我想检查一下是否有人想出了一种方法来做到这一点 我有一个网络应用程序 可以根据浏览器窗口中的用户选择生成打印报告 我有一个自定义页眉和页脚 当从浏览器打印报告时 应在每个打印页
  • 在 R 中使用 ggplot2 创建“雷达图”(又名星图;蜘蛛图)

    我想创建一个如下图所示的图 我知道我可以使用radarchart函数来自fmsb包裹 我怀疑是否ggplot2可以用极坐标这样做吗 谢谢 首先 我们加载一些包 library reshape2 library ggplot2 library
  • JS:如何在没有 XMLHttpRequest 的情况下对本地文件进行 Base64 编码?

    我正在尝试对本地文件进行 Base64 编码 它就在我的旁边 js文件 因此不会进行上传 解决方案如this using XMLHttpRequest 出现跨站点脚本错误 我正在尝试这样的事情 这不起作用 但它可能有助于解释我的问题 var
  • 获取 MySQL 数据库列表和服务器版本?

    我的 MySQL 连接字符串是 Server localhost User ID root Password 123 pooling yes charset utf8 DataBase 我的问题是 我应该编写什么查询来获取存在的数据库名称
  • Qt:重叠半透明QgraphicsItem

    我使用 QGraphicsView 一段时间了 我面临着一个先决条件 我不确定使用这个框架是否可以满足它 尽可能简单地说 我有 2 个重叠的 RectItem 和一个半透明的 QBrush 两者相同 是否可以防止重叠区域变得更加不透明 我只
  • Google Drive 使用 javascript 断点续传

    我正在尝试使用以下方式将文件上传到 Google 云端硬盘适用于 JavaScript 的 Google API 客户端库 and 可断点上传类型 我成功进行了身份验证并获取了上传 URI 但在发送实际数据时遇到了问题 如果文件仅包含 AS
  • 仅针对更改的文件增量构建 VSTS (Wordpress)

    我有一个用于 Wordpress php 文件的构建和发布管道 但我只想为源代码管理中更改的文件创建构建 我没有使用 Visual Studio 构建任务 因为我猜这不适用于 php 文件 以下是管道的配置方式 目前根据build我仅使用来
  • 如何从可能包含或不包含 null 的缓冲区构造“std::string”?

    我有一个缓冲区 为简单起见 假设是一个固定大小的数组 char我想建造一个std string从 所述缓冲区可以是空终止的或者其内容可以运行到并包括最后一个字符 如果缓冲区确实包含一个或多个空值 它们不应该出现在结果中string 复制应该
  • 如何在Android应用程序中的单个数据库中创建两个表?

    我已经在 Sqlite Android 应用程序中创建了一个数据库 并尝试在数据库中添加两个表 但创建该数据库时遇到问题 仅创建了第一个表 有谁能够帮助我 package com android cdtech import java sql
  • Java 中的迭代器

    什么是迭代器和集合 这两者有什么关系吗 the interface definition Interface Iterator boolean hasNext Object next note one way traffic void re