接口Iterator
是否已在java库中的某处定义(请注意术语)。
即。
我要问的是,说我有一个arraylist,现在我写。
Iterator itr= new Iterator();
但我从来没有定义像
这样的东西public interface Iterator{ // all the methods };
我是否需要导入已定义此迭代器的包?
让我举一个例子:
class BOX implements Comparable {
private double length;
private double width;
private double height;
BOX(double l, double b, double h) {
length = l;
width = b;
height = h;
}
public double getLength() {
return length;
}
public double getWidth() {
return width;
}
public double getHeight() {
return height;
}
public double getArea() {
return 2 * (length * width + width * height + height * length);
}
public double getVolume() {
return length * width * height;
}
public int compareTo(Object other) {
BOX b1 = (BOX) other;
if (this.getVolume() > b1.getVolume()) {
return 1;
}
if (this.getVolume() < b1.getVolume()) {
return -1;
}
return 0;
}
public String toString() {
return
“Length:
”+length +
” Width:
”+width +
” Height:
”+height;
}
} // End of BOX class
这是我的测试课。
import java.util.*;
class ComparableTest {
public static void main(String[] args) {
ArrayList box = new ArrayList();
box.add(new BOX(10, 8, 6));
box.add(new BOX(5, 10, 5));
box.add(new BOX(8, 8, 8));
box.add(new BOX(10, 20, 30));
box.add(new BOX(1, 2, 3));
Collections.sort(box);
Iterator itr = ar.iterator();
while (itr.hasNext()) {
BOX b = (BOX) itr.next();
System.out.println(b);
}
}
}// End of class
现在在课程ComparableTest
中,它也不应该实现interface iterator
,我不应该定义包含所有方法的interface iterator
。另外,迭代器方法的实现在哪里?
我可能很困惑,但请帮助! 感谢。
答案 0 :(得分:5)
我怀疑你的意思是java.util.Iterator<E>
。
不,你不写:
Iterator itr= new Iterator();
......这可能永远不会有效,因为它是一个界面。此外,它是Iterator
,而不是iterator
,您的代码应使用import
,而不是Import
- Java区分大小写。
相反,你写:
Iterator<Foo> iterator = list.iterator();
但不,ComparableTest
不需要实施Iterator<E>
- 为什么会这样?它使用 Iterator
接口,但它不会实现。
答案 1 :(得分:1)
接口Iterator
在标准API的包java.util
中定义。您可以使用它,因为代码中有import java.util.*;
行。
您不必实施它;它由ArrayList
的内部类实现,方法ArrayList.iterator()
返回。
您可以通过查看标准API的源代码找到类似的内容,该API随JDK文件src.zip一起提供。
答案 2 :(得分:0)
当然,它已经定义了。它是包java.util
中的内置接口,您需要像java.util.Iterator
一样导入它。
答案 3 :(得分:0)
添加到以前的帖子中,使用Iterator是不必要的(在当前上下文中)。相反,你应该尝试java的“增强for循环”:
for(BOX temp: box){
//do something...
}