-
LinkedList
类实现了List
接口和Deque
接口。List
接口表示有序的集合,它允许元素重复,并提供了对元素的索引访问。Deque
接口表示双端队列,它可以在两端插入和删除元素。
-
Deque
接口继承自Queue
接口。Queue
接口表示队列,它是一种先进先出(FIFO)的数据结构,允许在一端添加元素,在另一端删除元素。
-
Stack
类继承自Vector
类。Vector
类实现了List
接口,它是一个动态数组,允许在任意位置插入和删除元素。Stack
类扩展了Vector
类,并提供了栈的行为,即后进先出(LIFO)的操作。
注意以下几点:
1.不能直接new Queue<>(),因为Queue只是一个接口,不能够直接实例化
2.建议不要使用new Stack<>(),因为Stack继承了Vector,而Vector因为效率问题已经被不被使用。
用new LinkedList<>()模拟队列:
LinkedList
类提供了一些其他常用的方法,包括:
add(E element)
:在链表末尾添加一个元素。remove()
:删除并返回链表开头的元素。element()
:返回链表开头的元素。offer(E element)
:在链表末尾添加一个元素。poll()
:删除并返回链表开头的元素,如果链表为空则返回null
。peek()
:返回链表开头的元素,如果链表为空则返回null
。
用new LinkedList<>()模拟栈:
//定义栈 LinkedList<Integer> stack = new LinkedList<Integer>();
//加入元素 stack.push(1)
//弹出元素 stack.pop()
//获取栈顶元素,不弹出 stack.peek()
当然,用Deque也能实现模拟栈和队列的功能!