类库规模小且易于学习,不想C++那么复杂,却具有泛型算法的优点
队列:可以在队尾添加元素,可以在队头添加元素。可以查找队列元素的个数
队列
// 队列接口的简单形式 public interface Queue<E>{ void add(E element); E remove(); int size(); }
队列两种循环方式一种是循环数组;另一种是使用链表
每一个具体的实现都可以通过实现Queue接口的类来显示
// 这就是典型的接口与实现方法相分离 public class CircularArrayQueue<E> implements Queue<E>{ private int head; private int tail; CircularArrayQueue(int capacity) { ... } public void add(E element) { . . . } public E remove() public int size() { . . . } private E[] elements; }
java类库中,集合的基本接口是Collection接口。这个接口有两个基本方法
public interface Collection<E>{ boolean add(E element); Interator<E> iterator(); // .... }
Interator 接口包含四个方法
public interface Interator<E>{ E next(); boolean hasNext(); void remove(); default void forEachRemaining(Consumer <? super E> action); } // 通过反复调用next()方法可以逐个访问集合的每一个元素 Collection <string> = ....; Interator<string> iter = c.interator(); while(iter.hasNext()){ String element = iter.next(); do someting with element; } // 用foreach循环可以更简单的表示同样的操作 // 第三种循环通过interator里面的forEachRemaining方法提供的一个表达式。他将对表达式的每一个元素调用lambda表达式 iterator.forEachRemaining(element -> do something with element);
interator 方法将会删除上次调用next方法返回的元素
如何删除第一个元素?
Interator<string> iter = c.interator(); iter.next(); iter.remove();
图2
由于Collection和Interator都是泛型接口,可以编写操作任何集合类型的方法
public static <E> bollean contains(Collection<E> c,Object obj) { for (E element:c) if(element.equals(obj)) return true; return false; }
1.5 集合框架中的接口
集合中的框架接口图
图三