——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
Java集合框架:Java集合框架为接口和实现两部分组成
Java集合类库将接口和实现分离。
队列接口可以在队列末尾添加元素,在队列头部删除元素,可以查找队列中元素的个数。一个队列接口最小的形式可能如下这样。
interface Queue<E>
{
void add(E element);
E remove();
int size();
}
队列通常的有两种实现形式:一种是使用数组,另一种是使用链表:
使用数组实现
class ArrayQueue<E> implements Queue<E>
{
ArrayQueue(int capacity){...}
public void add(E element){...}
public E remove(){...}
public int size(){...}
private E[]elements;
private int head;
private int tail;
}
使用链表实现
class LinkedListQueue<E> implements Queue<E>
{
LinkedListQueue(){...}
public void add(E element){...}
public E remove(){...}
public int size(){...}
private Link head;
private Link tail;
}
在使用的时候,我们有两种类型的队列实现方式可选,
Queue<String> demo = new ArrayQueue<String>(100);
当后来我们想要换另外一种实现的时候,只需要在构造函数的地方更改就好。这就是我理解的接口和实现的好处之一了。
集合框架的Collection接口和迭代器接口
Java类库中,集合类的接口是Collection接口。这个接口定义了几个基础的方法,如add、iterator方法。add向集合中添加元素,如果添加成功返回true,否则返回false。iterator方法返回一个实现了Iterator接口的对象,用于依次访问集合中的元素。
iterator对象有三个方法:E next()、boolean hasNext()、void remove()。
next方法返回集合中的一个元素,它的原理类是于这样,
第一次调用,next() …… |eeeeee,调用后,e|eeeee ,跳过了第一个元素,处于第一个和第二个元素之间,并返回了跳过元素的引用。
hasNext方法,如果集合中还有可以访问的元素就返回true。结合next方法来使用。
Collection<String> c =...;
Iterator<String> iter = c.iterator();
While(it.hasNext())
{
String element = it.next();
}
remove()方法用于删除上次调用next方法返回的元素。
Iterator it = c.iterator();
c.next();
it.remove();
remove方法和next具有依赖性,只要调用next后才能调用remove方法,如果没有调用next方法就调用remove方法,将会抛出一个IllegalStateException异常。
想要删除两个相连的元素,不能这样直接调用
c.next();
c.remove;
c.remove;
而是必须调用next()越过后才能调用remove删除
c.next();
c.remove;
c.next();
c.remove;