因为刚刚开通博客,所以就先从现在开始学习的地方开始把学到的知识记录下来,至于之前学的内容的话,那就在之后复习的时候再补充上吧。
7.29日我们学习了queue集合的知识以及它的priorityQueue实现类还有它的子接口Deque接口以及子接口的实现类ArrayDeque。
Queue集合
该接口主要用于模拟队列的数据存储结构,队列遵循“先进先出”,“后进后出”的存储规范,即(FIFO),也就是说是先进入队列的放在队首,后进入队列的放在队尾。
方法区:
Void add(Object obj):将指定元素加入此队列的尾部。
Object element():获取队列头部的元素,但不删除该元素。
Boolean offer(Object obj):将指定元素加入此队列的尾部,当使用有容量限制的队列时,此方法比add()方法更好。
Object peek():获取队列头部的元素,但不删除该元素。如果此队列为空,返回null。
Object poll():获取队列头部的元素,并删除该元素,如果此队列为空,返回Null。
Object remove():获取队列头部的元素,并删除该元素。
priorityQueue实现类
值得注意的是虽然priorityQueue实现类是Queue接口的一个实现类,但是它并不是一个绝对标准的队列实现,因为priorityQueue实现类保存元素的顺序并不是按照先进先出这样的标准来的,而是在接收到元素之后按照元素的大小顺序依次排序,如果使用peek()或者poll()方法获取元素位置的时候,并不一定是首先存入的元素对象,而是队列中最小的元素。
注意:PriorityQueue不允许插入null值,它需要对队列元素进行排序,PriorityQueue的元素排序分两种情况,自然排序和定制排序,参照TreeSet。
方法同父类方法一样。
Queue子接口Deque
代表着一个双端队列,定义了一些双端队列的方法,允许从两端来操作队列元素。
方法区
void addFirst(Object obj):将指定元素插入到该队列的首部。
void addlast(Object obj):将指定元素插入到该队列的尾部。
Iterator desceningIterator():返回该双端队列对应的迭代器,该迭代器将以逆向顺序来迭代队列中的元素。
Object getFirst():获取双端队列的第一个元素。
Object getLast():获取双端队列的最后一个元素。
Boolean offerFirst(Object obj):将指定元素插入到双端队列的开头。
Boolean offerLast(Object obj):将指定元素插入到双端队列的末尾。
Object peekFrist():获取但不删除双端队列的第一个元素。
Object peekLast():获取但不删除双端队列的最后一个元素。
Object pollFrist():获取并删除双端队列的第一个元素。
Object pollLast():获取并删除双端队列的最后一个元素。
Object pop():获取并删除该双端队列的第一个元素。
void push(Object obj):将一个元素插入到该双端队列的队首位置,相当于addFrist()
Object removeFirst():获取并删除该双端队列的第一个元素。
Object removeLast():获取并删除该双端队列的最后一个元素。
该类实现Deque以及Queue接口,因此它们的方法必须全被重写了,因此方法区应与以上一样。
LinkedList实现类
LinkedList类是List接口的实现类,因此可根据索引来随机访问集合中元素。LinkedList还实现了Deque接口,因此可被当做双端队列来使用,同样也可以被当做“栈”来使用。
LinkedList与ArrayList、ArrayDeque的实现机制不同,ArrayList和ArrayDeque内部以数组的形式来保存集合中元素,因此随机访问集合元素时有较好的性能。而LinkedList内部以链表的形式来保存集合中的元素,因此随机访问集合元素时性能不如ArrayList和ArrayDeque。而插入、删除元素时性能非常出色,只需要改变指针所指向的地址即可。
关于Queue集合的内容现在先记录到这里,如果发现问题,之后可能会有补充。