Iterable 接口是做啥用的?

     2023-02-23     210

关键词:

【中文标题】Iterable 接口是做啥用的?【英文标题】:What is the Iterable interface used for?Iterable 接口是做什么用的? 【发布时间】:2010-11-06 17:52:36 【问题描述】:

我是初学者,无法理解Iterable界面的真实效果。

【问题讨论】:

【参考方案1】:

除了 Jeremy 所说的,它的主要好处是它有自己的语法糖:enhanced for-loop。如果你有一个Iterable<String>,你可以这样做:

for (String str : myIterable) 
    ...

很好很容易,不是吗?所有创建Iterator<String>、检查它是否hasNext() 以及调用str = getNext() 的繁琐工作都由编译器在幕后处理。

而且由于大多数集合要么实现Iterable,要么有一个返回一个的视图(例如MapkeySet()values()),这使得使用集合变得更加容易。

Iterable Javadoc 给出了实现Iterable 的类的完整列表。

【讨论】:

【参考方案2】:

如果您有一个复杂的数据集,例如树或螺旋队列(是的,我只是编造的),但您不在乎它的内部结构如何,您只想一个一个地获取所有元素,你让它返回一个迭代器。

有问题的复杂对象,无论是树、队列还是 WombleBasket 都实现了 Iterable,并且可以返回一个迭代器对象,您可以使用 Iterator 方法查询该对象。

这样,您只需询问它是否为hasNext(),如果是,您将获得next() 项目,而无需担心从树上或任何地方获取它。

【讨论】:

【参考方案3】:

它返回一个java.util.Iterator。主要用于增强for循环中能够使用实现类型

List<Item> list = ...
for (Item i:list) 
 // use i

编译器在底层调用 list.iterator() 并对其进行迭代,从而在 for 循环中为您提供 i

【讨论】:

目前为止最好的答案。【参考方案4】:

接口的核心是一个类应该实现的方法列表。可迭代接口非常简单——只有一种方法可以实现:Iterator()。当一个类实现Iterable 接口时,它告诉其他类您可以获得一个Iterator 对象,用于迭代(即遍历)对象中的数据。

【讨论】:

【参考方案5】:

迭代器基本上允许对任何集合进行迭代。

这也是使用 Java 的 for-each 控制语句所需要的。

【讨论】:

【参考方案6】:

Iterable 被定义为泛型类型。

Iterable ,其中 T 类型参数表示迭代器返回的元素的类型。

实现此接口的对象允许它成为“foreach”语句的目标。 for-each 循环用于遍历数组、集合。

阅读更多 -: https://examples.javacodegeeks.com/iterable-java-example-java-lang-iterable-interface/

【讨论】:

org.hibernate.cfg.improvednamingstrategy是做啥用的

参考技术A实现一个NamingStrategy接口,写好各接口方法,让Entity的各种名称以自己的方法和数据库中的名称对应。然后把这个接口填到configuration.setNamingStrategy(your_ns);中间或者配到xml中。本回答被提问者采纳 查看详情

JdbcDaoSupport 是做啥用的?

】JdbcDaoSupport是做啥用的?【英文标题】:WhatisJdbcDaoSupportusedfor?JdbcDaoSupport是做什么用的?【发布时间】:2014-02-2612:01:42【问题描述】:在Spring中,当我们插入数据库时​​,我们可以使用JdbcDaoSupport,也可以不使用。我的问题... 查看详情

sigaddset 是做啥用的?

】sigaddset是做啥用的?【英文标题】:Whatissigaddsetusedfor?sigaddset是做什么用的?【发布时间】:2014-12-0111:37:41【问题描述】:我有这段代码,我使用sigaddset和sigaction。但是,如果我评论segaddset结果是一样的structsigactionact;act.sa_handl... 查看详情

maven.multiModuleProjectDirectory 是做啥用的?

】maven.multiModuleProjectDirectory是做啥用的?【英文标题】:Whatismaven.multiModuleProjectDirectoryusedfor?maven.multiModuleProjectDirectory是做什么用的?【发布时间】:2015-06-2823:19:04【问题描述】:我在SO和Maven邮件列表上看到了很多关于设置env参... 查看详情

cursor.setNotificationUri() 是做啥用的?

】cursor.setNotificationUri()是做啥用的?【英文标题】:Whatiscursor.setNotificationUri()usedfor?cursor.setNotificationUri()是做什么用的?【发布时间】:2014-03-0415:02:29【问题描述】:我研究了如何使用ContentProviders和来自thistutorial的加载器我是怎... 查看详情

itertools.groupby() 是做啥用的?

】itertools.groupby()是做啥用的?【英文标题】:Whatisitertools.groupby()usedfor?itertools.groupby()是做什么用的?【发布时间】:2017-05-1515:43:37【问题描述】:在阅读python文档时,我遇到了itertools.groupby()功能。这不是很简单,所以我决定在... 查看详情

渠道是做啥用的?

】渠道是做啥用的?【英文标题】:Whatarechannelsusedfor?渠道是做什么用的?【发布时间】:2017-02-1102:35:37【问题描述】:在查看一些Go代码时,我发现了以下内容:ch:=make(chanint)我查阅了一个在线教程,了解GoChannels的工作原理:ht... 查看详情

MAKEWORD 是做啥用的?

】MAKEWORD是做啥用的?【英文标题】:WhatisMAKEWORDusedfor?MAKEWORD是做什么用的?【发布时间】:2014-06-1002:14:20【问题描述】:我在一段教学代码中遇到了这个宏MAKEWORD(2,2)。我在MSDN中读到它“通过连接指定的值来创建一个WORD值。”... 查看详情

Laravel 中的 `HtmlString` 是做啥用的?

】Laravel中的`HtmlString`是做啥用的?【英文标题】:Whatis`HtmlString`usedforinLaravel?Laravel中的`HtmlString`是做什么用的?【发布时间】:2017-07-0806:01:45【问题描述】:本课程:HtmlStringhtml=$html;/***获取HTML字符串。**@return字符串*/公共函数t... 查看详情

EasyMock.replay() 是做啥用的?

】EasyMock.replay()是做啥用的?【英文标题】:WhatisEasyMock.replay()usedfor?EasyMock.replay()是做什么用的?【发布时间】:2011-08-2415:14:28【问题描述】:我是单元测试和Junit的新手。我知道Junit的基础知识。我刚开始学习EasyMock框架。我无... 查看详情

SetPixelFormat() 中的 PIXELFORMATDESCRIPTOR 参数是做啥用的?

】SetPixelFormat()中的PIXELFORMATDESCRIPTOR参数是做啥用的?【英文标题】:WhatisthePIXELFORMATDESCRIPTORparameterinSetPixelFormat()usedfor?SetPixelFormat()中的PIXELFORMATDESCRIPTOR参数是做什么用的?【发布时间】:2010-03-2918:51:16【问题描述】:通常在设... 查看详情

predicateWithBlock: 中块的 bindings 参数是做啥用的?

】predicateWithBlock:中块的bindings参数是做啥用的?【英文标题】:WhatisthebindingsparameterfortheblockinpredicateWithBlock:usedfor?predicateWithBlock:中块的bindings参数是做什么用的?【发布时间】:2011-09-1914:10:01【问题描述】:+[NSPredicatepredicateWithB... 查看详情

app.config 是做啥用的?

】app.config是做啥用的?【英文标题】:Whatisapp.configfor?app.config是做什么用的?【发布时间】:2010-11-2817:44:52【问题描述】:Settings.settings生成Settings.Designer.cs,它可能会生成app.config,然后将其作为Foo.exe.config复制到输出目录。当... 查看详情

UITextInput 的 Tokenizer,它是做啥用的?

】UITextInput的Tokenizer,它是做啥用的?【英文标题】:TokenizerofUITextInput,whatisitusedfor?UITextInput的Tokenizer,它是做什么用的?【发布时间】:2013-05-0210:17:12【问题描述】:我正在实现一个自定义文本输入视图,它采用UITextInput协议,... 查看详情

namedtuple 的第一个参数是做啥用的?

】namedtuple的第一个参数是做啥用的?【英文标题】:What\'sthefirstargumentofnamedtupleusedfor?namedtuple的第一个参数是做什么用的?【发布时间】:2015-08-1202:46:34【问题描述】:我们像这样使用namedtuple:>>>fromcollectionsimportnamedtuple&... 查看详情

eq是做啥用的,它和压缩一样吗.如果不一样那压缩是做啥用的~

EQ是频率均衡器,它能够允许用户主动地对声音的各频段进行增益或衰减的处理。压缩是是对电信号的处理装置,它会将过大的电压减弱,过小的电压增强,体现在声音上就是能够让音箱中放出的声音稳定在一个设定的范围,尤... 查看详情

用户定义的操作“类型”是做啥用的?

】用户定义的操作“类型”是做啥用的?【英文标题】:Whatistheuserdefinedaction"type"for?用户定义的操作“类型”是做什么用的?【发布时间】:2016-08-0801:43:29【问题描述】:这里的“类型”列有什么作用?【问题讨论】:... 查看详情

测试和设置是做啥用的?

】测试和设置是做啥用的?【英文标题】:WhatisTest-and-Setusedfor?测试和设置是做什么用的?【发布时间】:2008-09-2313:22:00【问题描述】:在阅读了Test-and-SetWikipediaentry之后,我仍然想知道“Test-and-Set的用途是什么?”我知道您可... 查看详情