Tag: 可迭代

迭代器用Java读取和处理文件

假设我有一个Point类和一个处理Point实例的函数 class Point {private final int x,y; …} … void handlePoints(Iterable points){for(Point p:points){…}} 现在我想从文件中读取points 。 该文件的每一行包含两个数字,因此我有一个函数(“工厂方法”)来从一行创建一个point 。 点makePoint(String line){…} 我现在应该怎么做? 我可以编写一个函数来将文件读取到一个points列表并调用handlePoints函数。 List readPoints(BufferedReader reader){…} //在这里使用makePoint void handlePoints(BufferedReader reader){ List points = readPoints(reader); handlePoints(分); } 不幸的是,这个function似乎并不特别优雅,因为它在内存中创建了一个不必要的点列表。 使用迭代器不是更好吗? void handlePoints(Iterator points){…} Iterator readPoints(BufferedReader reader){…} //在这里使用makePoint void handlePoints(BufferedReader reader){ Iterator points = readPoints(reader); handlePoints(分); } 是否有意义? 这段代码在Java中不会太“吵”吗?

为什么在java.util.Collection上有一个方法iterator()

为什么在接口java.util.Collection上定义了iterator()方法,它已经扩展了java.util.Iterable,它定义了这个方法。 我正在考虑某种向后兼容性或在集合级别上对方法编写一些JavaDoc的机会。 还有其他想法吗?

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

我试图了解Java Iterator和Iterable接口 我正在写这门课 class MyClass implements Iterable { public String[] a = null; public MyClass(String[] arr) { a = arr; } public MyClassIterator iterator() { return new MyClassIterator(this); } public class MyClassIterator implements Iterator { private MyClass myclass = null; private int count = 0; public MyClassIterator(MyClass m) { myclass = m; } public boolean […]

Java:为什么不能遍历迭代器?

我读了为什么Java的Iterator不是Iterable? 为什么不是可以输入的枚举? ,但我仍然不明白为什么这样: void foo(Iterator it) { for (X x : it) { bar(x); baz(x); } } 没有成功。 换句话说,除非我遗漏了某些东西,否则上面可能是一个很好的有效语法糖: void foo(Iterator it) { for (X x; it.hasNext();) { x = it.next(); bar(x); baz(x); } }