扫码关注公众号
栈的几种主要基本操作
voidpush(intdata):入栈(将数据data插入到栈中)intpop():出栈(删除并返回最后一个插入栈的元素)inttop():返回最后一个插入栈的元素,但不删除intsize():返回存储在栈中的元素个数booleanisEmpty():返回栈是否是空栈booleanisFull():返回是否是满栈voidClear():清除整个栈
栈的几种实现方式
1.基于简单数组的实现方式2.基于动态数组的实现方式3.基于链表的实现方式4.基于队列的实现方式
常见的阻塞队列有?
ArrayBlockingQueue:一个由数组结构组成的有界阻塞队列。LinkedBlockingQueue:一个由链表结构组成的有界阻塞队列。PriorityBlockingQueue:一个支持优先级排序的无界阻塞队列。DelayQueue:一个使用优先级队列实现的无界阻塞队列。SynchronousQueue:一个不存储元素的阻塞队列。LinkedTransferQueue:一个由链表结构组成的无界阻塞队列。LinkedBlockingDeque:一个由链表结构组成的双向阻塞队列。
基于LinkedList实现队列结构
/***使用java.util.Queue接口,其底层关联到一个LinkedList(双端队列)实例.*/importjava.util.LinkedList;importjava.util.Queue;publicclassQueueList<E>{privateQueue<E>queue=newLinkedList<E>();//将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回true,//如果当前没有可用的空间,则抛出IllegalStateException。publicbooleanadd(Ee){returnqueue.add(e);}//获取,但是不移除此队列的头。publicEelement(){returnqueue.element();}//将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,//此方法通常要优于add(E),后者可能无法插入元素,而只是抛出一个异常。publicbooleanoffer(Ee){returnqueue.offer(e);}//获取但不移除此队列的头;如果此队列为空,则返回nullpublicEpeek(){returnqueue.peek();}//获取并移除此队列的头,如果此队列为空,则返回nullpublicEpoll(){returnqueue.poll();}//获取并移除此队列的头publicEremove(){returnqueue.remove();}//判空publicbooleanempty(){returnqueue.isEmpty();}}