数据结构与算法-->表

这里所说的表指的是链表list。表有两种实现方式:

1、数组实现:适合查找但是不适合删除和插入。当然这只是相对而言。

2、链表实现:适合插入和删除但是不适合查找。

java collections API中的表:

Collection接口:

public Interface Collection<AnyType> extends Iterable<AnyType>{
    
    int size();
    boolean isEmpty();
    void clear();
    boolean contains(AnyType x);
    boolean add(AnyType x);
    boolean remove(AnyType x);
    java.util.Iterator<AnyType> iterator();
}

接口扩展了Iterable接口,实现Iterable接口的类可以使用增强for循环。

实现Iterable接口的集合必须实现iterator方法,返回一个Iterator类:

public interface Iterator<AnyType>{
 
    boolean hasNext();
    AnyType next();
    void remove();
}

Iterator接口的remove方法可以删除next方法返回的最新元素。remove后不能在紧接着remove必须在下一次next之后才能remove。虽然Collection也有remove方法,但是使用Iterator的remove方法效率更高也更合适。

使用Iterator迭代器的时候应该注意:如果正在被迭代的集合在结构上发生了变化(add,remove,clear)那么迭代器将不在合法,将抛出ConcurrentModificationException异常。但是在Iterator内部调用remove方法则没有问题。

未完待续......

猜你喜欢

转载自my.oschina.net/u/3295928/blog/2051606