后端小树林

集合 (1)

2018-07-21  本文已影响1人  奔跑的蛙牛

1. java集合框架

类库规模小且易于学习,不想C++那么复杂,却具有泛型算法的优点

1.1 将集合的接口与实现分离

队列:可以在队尾添加元素,可以在队头添加元素。可以查找队列元素的个数

队列

// 队列接口的简单形式

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;

}

1.2 collection 接口

java类库中,集合的基本接口是Collection接口。这个接口有两个基本方法

public interface Collection<E>{

    boolean add(E element);

    Interator<E> iterator();

    // ....

}

1.3 迭代器

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

1.4 泛型实用方法

由于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 集合框架中的接口

集合中的框架接口图

图三
上一篇下一篇

猜你喜欢

热点阅读