《JAVA核心技术 卷1》读书笔记02 集合

第13章 集合
13.1 集合接口

1、将集合的接口与实现分离–队列
队列接口:指出在队列尾部添加元素,头部删除元素,可查找队列中元素个数。

一个队列接口的最小形式:

    interface Queue<E> {
        void add(E element);
        E remove();
        int size();
    }

接口不会说明队列是如何实现的。但队列通常有两种实现方式:
1、循环数组:比链表高效,但容量有限
2、链表:对象数量没有上限时最好使用

//数组
//java库中没有这个类 只是作为示例
    abstract class CircularArrayQueue<E> implements Queue<E> {
        CircularArrayQueue(int capacity){}
        public void add(E element){}
        public E remove(){}
        public int size(){}

        private E[] elements;
        private int head;
        private int tail;
    }
//链表
//java库中没有这个类 只是作为示例
    abstract class LinkedListQueue<E> implements Queue<E> {
        public void add(E element){}
        public E remove(){}
        public int size(){}

        private Link head;
        private Link tail;
    }

因为是接口,队列的实现方式可以便捷的修改:

//数组实现
    Queue<Customer> expressLane = new CircularArrayQueue<Customer>(100);
    expressLane.add(new Customer("Harry"));

    //修改为链表实现
    Queue<Customer> expressLane = new LinkedListQueue<Customer>(100);
    expressLane.add(new Customer("Harry"))

2、Java类库中的集合接口和迭代器接口

(1)Cellection接口
集合类的基本接口是Collection接口。该接口有两个基本方法,添加和访问元素

    public interface Collection<E>{
        boolean add(E element);//1、添加
        Iterator<E> iterator();//2、访问
    }
  • add方法:返回true或false,如果添加元素确实改变了集合就是true,如果没变就是false。集合中不允许有重复的对象
  • iterator方法:返回一个实现了Iterator接口的对象。可使用这个迭代器对象依次访问集合中的元素。
    • 迭代器
    • 删除元素
    • 泛型实用方法

迭代器

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

1)通过反复调用next方法,逐个访问集合中的每个元素。但是next如果到集合的末尾会抛出错误,所以调用next方法之前要调用hasNext方法,返回true或者false。

    Collection<String> c=..;
    Iterator<String> iter = c.iterator();
    //1一种老旧的循环方式
    while(iter.hasNext()) {
        String element = iter.next();
        ...
    }
    //2一种优雅的循环方式
    for(String element : c) {
    ...
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值