草庐IT

V_Iterator

全部标签

java - 为什么 Iterable<E> 和 Iterator<E> 在不同的包中?

Iterable在java.lang而Iterator在java.util.这是否有充分的理由,或者这仅仅是糟糕设计的产物?这似乎很奇怪,因为唯一一个Iterable有利于提供Iterator.编辑:一个潜在的原因是(then-)新引入的for-each循环。我想我的问题是,它们是等价的吗?for(Objecto:collection)...vsfor(Iteratoriter=collection.iterator();iter.hasNext();){o=iter.next();...如果是,那仍然不能解释为什么这两个类在不同的包中,因为编译器必须导入java.util无论如何使用

java - Scanner 为什么要实现 Iterator<String>?

我只是想知道为什么java.util.Scanner工具java.util.Iterator?Scanner实现了remove方法并抛出UnsupportedOperationException.但是类在实现接口(interface)时不应该履行接口(interface)的契约吗?实现iterator并添加一个抛出异常的方法有什么用?为什么不直接避免接口(interface)的实现并保持简单呢?有人可能会争辩说,它的定义是为了让可能扩展Scanner的类可以实现该方法,例如AbstractList有一个add抛出UnsupportedOperationException的方法。但是Ab

c# - 为什么 Iterator 定义 remove() 操作?

在C#中,IEnumerator接口(interface)定义了一种遍历集合并查看元素的方法。我认为这非常有用,因为如果你通过IEnumerable对于一个方法,它不会修改原始源代码。但是,在Java中,Iterator定义remove操作(可选!)允许删除元素。通过Iterable没有任何优势方法,因为该方法仍然可以修改原始集合。remove的可选性是refusedbequest的一个例子气味,但忽略它(已经讨论过here)我会对促使remove的设计决策感兴趣在接口(interface)上实现的事件。导致remove的设计决策是什么?正在添加到Iterator?换句话说,明确没有r

java - 为什么 iterator.remove 不抛出 ConcurrentModificationException

iterator.remove()与list.remove()有何不同,因此迭代器不会抛出异常而list.remove()会扔一个吗?最后,两者都在修改集合大小。这里请忽略多线程。我只是在谈论for-each循环和迭代器循环。据我所知,for-each循环仅在内部创建迭代器。我很困惑。 最佳答案 我想你的意思是,如果你正在迭代一个列表,为什么list.remove()导致抛出ConcurrentModificationException而iterator.remove()不是吗?考虑这个例子:Listlist=newArrayLis

java - 为什么 Iterator.next() 抛出 ConcurrentModificationException

这个问题在这里已经有了答案:WhyisaConcurrentModificationExceptionthrownandhowtodebugit(8个答案)关闭3年前。奇怪的是,这段小代码抛出了上面提到的异常。此外,查看网上发布的代码这似乎是正确的:importjava.util.ArrayList;importjava.util.Iterator;publicclassIteratorTest{ArrayListarr=newArrayList();Iteratori=arr.iterator();publicvoidshow(){arr.add(2);arr.add(5);arr.

java - 为什么Iterator接口(interface)中没有add方法

在Iterator中,Sun添加了remove方法来删​​除集合中最后访问的元素。为什么没有向集合中添加新元素的add方法?它可能对集合或迭代器产生什么样的副作用? 最佳答案 好的,我们开始:设计常见问题解答中明确说明了答案:为什么不提供Iterator.add方法?语义不清楚,因为Iterator的契约不保证迭代的顺序。但是请注意,ListIterator确实提供了添加操作,因为它确实保证了迭代的顺序。http://docs.oracle.com/javase/1.4.2/docs/guide/collections/design

java - 在同一个类中实现 Java Iterator 和 Iterable?

我正在尝试理解JavaIterator和Iterable接口(interface)我正在写这个类classMyClassimplementsIterable{publicString[]a=null;publicMyClass(String[]arr){a=arr;}publicMyClassIteratoriterator(){returnnewMyClassIterator(this);}publicclassMyClassIteratorimplementsIterator{privateMyClassmyclass=null;privateintcount=0;publicMy

java - 将 Enumeration<T> 视为 Iterator<T>

我有一个实现Enumeration的类接口(interface),但Java的foreach循环需要Iterator界面。有没有Enumeration至IteratorJava标准库中的适配器? 最佳答案 如果您只想在for-each循环中迭代某些内容(因此是Iterable而不仅仅是Iterator),there'salwaysjava.util.Collections.list(Enumeratione)(不使用任何外部库)。 关于java-将Enumeration视为Iterato

Java:如果使用 for-each 循环遍历集合,则可以替代 iterator.hasNext()

我试图用for-each语句替换基于迭代器的Java列表循环,但代码在某些时候使用了iterator.hasNext()检查它是否到达列表中的最后一个元素。for-each替代方案是否有类似的东西?for(Objectcurrent:objectList){if(last-element)do-something-special} 最佳答案 for-each只是迭代器版本的语法糖,如果您检查编译后的字节码,您会注意到编译器实际上将其更改为迭代器版本。使用for-each表单,您无法检查是否有更多元素。如果您需要该功能,请继续使用显式

github.com/json-iterator/go 详细教程

最近接触到了github.com/json-iterator/go,是由滴滴开源的第三方json编码库,它同时提供Go和Java两个版本。文中大量内容来自github上的wiki文档,有兴趣的朋友可以直接点击Home跳转到官方文档查阅。本文加了些自己的思考以及相关的详细学习例子,废话不多说了,冲!!!1、基础介绍json-iterator提供简洁的API,可以让你很方便地进行json序列化/反序列化;与encoding/json完全兼容,使用者可以快速、方便地迁移到json-iterator上来。此外,json-iterator还提供了很多其他方便的功能,如开放的序列化/反序列化配置、Exte