关于内部类,谢了
import java.util.*;
class ArrayListTest
{
public static void printElements(Collection c)
{
Iterator it=c.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
Collection是接口呀,怎么能定义 C 呢
Iterator it=c.iterator();这又是什么意思
it.hasNext()) ,it.next());这是怎么解释呢
------解决方案--------------------Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
Iterator
对集合进行迭代的迭代器。迭代器代替了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:
迭代器允许调用方利用定义良好的语义在迭代期间从迭代器所指向的集合移除元素。
方法名称得到了改进。
hasNext() 如果仍有元素可以迭代,则返回 true。
next() 返回迭代的下一个元素
API 上面都有的,看看吧
------解决方案--------------------首先明确一点, 这里没内部类什么事儿...
Collection是接口呀,怎么能定义 C 呢
public static void printElements(Collection c)
这里表示c的类型的Collection或者实现了Collection接口的子类, 这是面向接口编程的直接体现, 应该说是一种好的实践吧...
Iterator it=c.iterator();这又是什么意思
Collection接口定义了iterator()方法, 它会返回一个Iterator, 使用它就可以遍历这个Collection的所有元素...
it.hasNext()) ,it.next());这是怎么解释呢
hasNext()判断是否还有下一个元素, it.next()返回下一个元素
这个就是常用的Iterator模式啦!
------解决方案--------------------这和内部类有什么联系呢?楼主首先搞清楚,在这个类中没有一点跟内部类能扯上关系的!
Collection是集合类的一个接口,所有的List 和Set类都继承于这个接口,通俗点讲,它们里面是用来放东西的.至于List和Set的区别,还希望楼主自己去查阅.
Iterator是一个接口,它是设计模式中迭代模式的经典实例.主要是用来遍历的.里面有一些非常有用的方法.可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起形成的总体称之为聚集,聚集对象是能够包容一组对象的容器对象。迭代子模式将迭代逻辑封装到一个独立的子对象中,从而与聚集本身隔开。迭代子模式简化了聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象,每一个迭代子的迭代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。
了解了这些以后,你可以这样来定义一个Collection.首先这里还用到了多态的知识,是面向对象的特征!List l = new ArrayList(); 这个l就是一个Collection(is - a 的关系).这就是继承和多态!
Iterator不能够直接去new.它一般都是被集合类中的iterator()方法来创建的.(这些方法返回一个Iterator对象,这样就创建了Iterator),至于Iterator中的方法,希望楼主能查阅JDK自己去了解一下.
相信你了解了这些以后,去看JDK文档应该没有什么问题了!