一.集合接口
队列:先进先出;栈:先进后出
队列接口:在尾部实现添加元素,在首部实现删除元素
队列接口实现方法:一种是循环数组的实现,另一种是使用列表
代码实现片段
1.集合的接口
public interface Queue2<E> {
void add(E element);
E remove();
int size();
}
2.循环接口
class CircularArryayQueue<E> implements Queue2<E>
{
public CircularArryayQueue()
{
}
public void add(E element) {
}
public E remove() {
return null;
}
public int size() {
return 0;
}
private E[] elem;//声明元素
private int head;
private int tail;
}
3.使用链表的方式
class LinkedListQueue<E> implements Queue2<E>
{
public LinkedListQueue(){}
public void add(E element) {
}
public E remove() {
return null;
}
public int size() {
return 0;
}
private Link head;
private Link tail;
}
相比较而言,循环数组的效率比较高,但是循环数组是一个有限集合,容量有限。
二.集合接口和迭代器接口
集合接口
public interface Queue2<E> {
boolean add(E e);
Iterator<E> iterator();//迭代器接口
}
迭代器接口
public interface Iterator<E>
{
E next();
boolean hasNext();
void remove();
}
此处需要注意的是,需要再next()方法之前,调用hasNext()方法,否则会出现
NoSuchElementException
Co
实用
Collection<String> c=...;
Iterator<String> iter=c.iterator();
while(iter.hasNext())
{
String element=iter.next();
....
}
Collection接口扩展了Iterable接口.因此对标准类库的所有集合都可以使用”for each”
元素被访问的顺序取决于集合类型,ArrayList和HashSet不同
java迭代器可以认为是两个元素之间。
2.使用迭代器进行删除元素
Iterator it=c.iterator();
it.remove();
it.next();//需要向后移动一位
it.remove();
3.泛型实用方法
public static boolean contains(Collection c,Object obj)
{
for(E element:c)
if(element.equals(obj))
return false;
}
java常用的集合库