集合 (1)

作者: 奔跑的蛙牛 | 来源:发表于2018-07-21 22:14 被阅读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 集合框架中的接口

    集合中的框架接口图

    图三

    相关文章

      网友评论

        本文标题:集合 (1)

        本文链接:https://www.haomeiwen.com/subject/strkmftx.html