草庐IT

ITERATOR

全部标签

java - 如何实现这个FilteringIterator?

IObjectTest是一个接口(interface)单一boolean测试(对象o)方法FilteringIterator是Iterator的一个实现,它是用另一个迭代器初始化和一个IObjectTest实例:new过滤迭代器(我的迭代器,我的测试)。您的FilteringIterator将然后允许迭代'myIterator',但跳过任何不通过的对象'myTest'测试。由于“hasNext”操作实际上涉及重复移动底层迭代器直到到达下一个匹配项。问题是它如何将它移回迭代器,因为hasNext不应该移动底层迭代器。 最佳答案 如果您

java - 使用包含或循环遍历列表之间有什么大的区别吗?

在性能方面,使用之间真的有很大的区别吗:ArrayList.contains(o)与foreach|iteratorLinkedList.contains(o)与foreach|iterator当然,对于foreach|iterator循环,我必须显式比较方法并相应地返回true或false。我正在比较的对象是equals()和hashcode()都被正确覆盖的对象。编辑:毕竟不需要了解containsValue,很抱歉。是的,我很愚蠢......我意识到我的问题是关于containsKey与foreach的问题是多么愚蠢,没关系,我不知道我在想什么。我基本上想知道上面的那些(编辑掉其

java - 为什么 iterator.remove() 被描述为可选操作?

我浏览了Iterator.remove()的文档(http://java.sun.com/javase/6/docs/api/java/util/Iterator.html)remove()被描述为voidremove()Removesfromtheunderlyingcollectionthelastelementreturnedbytheiterator(optionaloperation).Thismethodcanbecalledonlyoncepercalltonext.Thebehaviorofaniteratorisunspecifiediftheunderlyingco

java - 如何确定 ArrayList 迭代器接下来将返回的对象类型?

我有一个ArrayList,我正在使用一个迭代器来遍历它。我需要找出下一个对象的类型:IteratorvehicleIterator=vehicleArrayList.iterator();while(vehicleIterator.hasNext()){//HowdoIfindthetypeofobjectinthearraylistatthispoint//forexample,isitacar,busetc...}谢谢 最佳答案 Objecto=vehicleIterator.next();if(oinstanceofCar)

Java 流与迭代器

我一直在研究Java新的、Shiny的功能部分,最让我困惑的事情之一是流?它们有什么用?在Google上,我主要找到了关于如何使用它们的解释和我已经记下的实际示例,没有关于幕后魔法的具体内容,这正是我感兴趣的地方。我的意思不是实际意义上的,来自一些函数式语言,我想出了map/filter/reduce/等等。相当快,但为什么我们需要先转换为流?Java已经有了迭代器。流和迭代器之间是否存在根本区别,例如一个是惰性的而另一个不是?还是其他原因?底线:迭代器和流之间的根本区别是什么?哪些功能不能作为迭代器的扩展来实现,需要一个全新的类型家族? 最佳答案

java - 如果对同一个集合调用同一个迭代器两次,会发生什么情况?

如果我为myList设置一个迭代器:Iteratoriter=myList.iterator();while(iter.hasNext()){MyObjmyObj=(MyObj)iter.next();doPrint(myObj.toString());}我第二次调用它:while(iter.hasNext()){MyObjmyObj=(MyObj)iter.next();doPrint(myObj.toString());}第二次调用会回到采集开始吗? 最佳答案 iter.hasNext()在第二个循环中会立即返回false,所以

java - 采访 : Design an iterator for a collection of collections

为java中的集合设计一个迭代器。迭代器应该隐藏嵌套,允许您迭代属于所有集合的所有元素,就好像您在处理单个集合一样 最佳答案 这是一个老问题,但如今(2019年)我们有了JDK8+好东西。特别是,我们有流,这使得这个任务变得简单:publicstaticIteratorflatIterator(Collection>collections){returncollections.stream().filter(Objects::nonNull).flatMap(Collection::stream).iterator();}我正在过滤

java - 迭代器空集合

当不确定集合引用是否为null时,我必须在迭代之前检查null是很常见的。示例:Collectioncollection=......if(collection!=null)//troublesomefor(Objecto:collection)当然,我知道空集合比null好得多,但在某些情况下,客户端代码无法控制来自其他模块的可空集合(例如,来自3rd方代码的返回值)。所以我写了一个实用方法:publicstaticIterablenullableIterable(Iterableit){returnit!=null?it:Collections.emptySet();}在客户端代码

java - 公开内部集合项时应该使用 Iterator 还是 Iterable?

我有一个带有私有(private)可变数据列表的类。我需要在以下条件下公开列表项:列表不应在外部修改;使用getter函数的开发人员应该清楚,他们获得的列表无法修改。应将哪个getter函数标记为推荐方法?或者你能提供更好的解决方案吗?classDataProcessor{privatefinalArrayListsimpleData=newArrayList();privatefinalCopyOnWriteArrayListcopyData=newCopyOnWriteArrayList();publicvoidmodifyData(){...}publicIterablegetU

java - 使用 JAXB 解码时将空元素转换为 null

使用以下JAXB注释定义一个类:classCourse{@XmlElement(name="book")ListrequiredBooks=newArrayList();解码包含此内容的XML文档时...我最终将一本书添加到列表中,并将其所有属性设置为null。我不控制XML输入。如何防止添加这本空书?我尝试在set..()或add..()方法中进行拦截,但事实证明JAXB在处理集合时会绕过setter。有什么建议吗? 最佳答案 这是一个确实有效的解决方案。再一次,优雅被抛在了后面。JAXB定义了两个回调:beforeUnmarsh