java Queue、Stack常用方法以及Queue接口常见的实现类

Queue接口方法

Java Queue接口是一个继承自Collection接口的子接口,它表示一种队列数据结构,具有先进先出(FIFO)的特性。Queue接口定义了以下方法:

1. boolean add(E e):将指定元素插入此队列的尾部,如果队列已满,则抛出IllegalStateException异常。

2. boolean offer(E e):将指定元素插入此队列的尾部,如果队列已满,则返回false3. E remove():检索并删除此队列的头部元素,如果队列为空,则抛出NoSuchElementException异常。

4. E poll():检索并删除此队列的头部元素,如果队列为空,则返回null5. E element():检索但不删除此队列的头部元素,如果队列为空,则抛出NoSuchElementException异常。

6. E peek():检索但不删除此队列的头部元素,如果队列为空,则返回null

其中,add()和offer()方法的区别在于,当队列已满时,add()方法会抛出异常,而offer()方法则会返回false。同样,remove()和poll()方法的区别在于,当队列为空时,remove()方法会抛出异常,而poll()方法则会返回null。而element()和peek()方法的区别在于,当队列为空时,element()方法会抛出异常,而peek()方法则会返回null。


Queue接口常见的实现类

1. LinkedListLinkedListJava中的一个双向链表,它实现了Queue接口。它可以用作队列或双端队列。

2. PriorityQueuePriorityQueue是一个基于优先级堆的无界队列。它实现了Queue接口,并允许按照元素的自然顺序或者指定的Comparator顺序来进行排序。

3. ArrayDequeArrayDeque是一个基于数组实现的双端队列。它实现了Deque接口,可以用作队列、双端队列或栈。

4. ConcurrentLinkedQueueConcurrentLinkedQueue是一个基于链表实现的线程安全队列。它实现了Queue接口,并且可以被多个线程同时访问。

5. LinkedBlockingQueueLinkedBlockingQueue是一个基于链表实现的阻塞队列。它实现了Queue接口,并且可以被多个线程同时访问。当队列为空时,获取元素的操作会被阻塞,直到队列中有新的元素被添加。

6. ArrayBlockingQueueArrayBlockingQueue是一个基于数组实现的阻塞队列。它实现了Queue接口,并且可以被多个线程同时访问。当队列已满时,添加元素的操作会被阻塞,直到队列中有元素被移除。

Stack类常用方法

Java中的Stack类是一个后进先出(LIFO)的数据结构,它继承自Vector类。下面是Stack类的一些常用方法:

1. push(E item):将元素压入栈顶。
2. pop():弹出栈顶元素,并将其从栈中移除。
3. peek():返回栈顶元素,但不移除它。
4. empty():判断栈是否为空,如果栈为空则返回true,否则返回false5. search(Object o):查找指定元素在栈中的位置,如果找到则返回该元素距离栈顶的位置(栈顶为1),如果未找到则返回-1

除了上述方法,Stack类还继承了Vector类的其他方法,如size()、isEmpty()、elementAt()等。需要注意的是,由于Stack类是Vector的子类,它也继承了Vector的同步性,因此在多线程环境下使用Stack时需要注意线程安全问题。

你可能感兴趣的:(java,开发语言)