集合接口
一. 集合接口
Java集合类库将接口(interface)与实现(implementation)分离。
举个例子,队列接口的最小形式
interface Queue {void add(E element);E remove();int size();}
但是队列实现的两种方式:一种是使用循环数组;另一种是使用链表。
二. Java类库中的集合接口和迭代器接口
集合类的基本接口是Collection接口,有两个基本方法
public inter Collection{boolean add(E element);Interator iterator}
add方法用于向集合中添加元素,添加元素确实改变集合,返回true,否则false;集中不允许有重复的对象。
iterator方法用于返回一个实现了Iterator接口的对象。依次访问集合中的元素
1. 迭代器
包含3个方法
public interface Iterator{E next(); //查找下一个boolean hasNext(); //是否有下一个void remove(); //删除}
集合的末尾,next方法抛出NoSuchElementException,需要在调用next之前调用hasNext方法。
Collection c=...;Iterator iter=c.iterator();while(iter.hasNext()){ String element=iter.next(); //do something}
java SE5.0起可以使用 for each进行循环
for(String element :c){ // do something}
可以与任意实现了Iterable接口的对象一起工作,Iterable接口
pulic interface Iterable{ Iterator iterator();}
标准类中的任何集合都可以使用 for each循环
元素被访问的顺序取决于集合类型。
备注:Iterator接口的next和hasNext方法与Enumeration接口的nextElement和hasMoreElements方法的作用一样,但是这个方法名太累赘,更喜欢短的方法名称。
java迭代器认为是位于两个元素之间,当调用next时,迭代器就越过下一个元素,并返回刚刚越过的那个元素的引用。
2. 删除元素
删除上次调用next方法时返回的元素。想要删除某个元素,仍然需要越过这个元素。如果调用remove之前没有调用next,将抛出一个IllegalStateException异常。所以每次删除之前,之前都要调用next方法
Iterator it = stack.iterator(); //删除it.next();it.remove();it.next();it.remove();
3.泛型实用方法
Collection与Iterator都是泛型接口,可以编写操作任何集合类型的实用方法。类库设计者:某些实用方法非常有用,应该提供给用户。
但是实现Collection接口的每一个类都要提供太多的例行方法,过于繁琐,java类库提供AbstractCollection,将基础方法size和iterator抽象化,提供了例行方法,使实际的数据结构实现者并没有需要实现所有例行方法。
关键字:java, 集合, 迭代器, iterator
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!