Java自带的栈

引言

在编程中,栈(Stack)是一种常见的数据结构,它遵循先进后出(Last-In-First-Out,LIFO)的原则。Java语言中提供了自带的栈数据结构,方便开发者进行栈相关操作。本文将介绍Java自带的栈,并提供一些代码示例来帮助读者更好地理解和使用它。

Java自带的栈类

在Java中,栈数据结构由java.util.Stack类实现。Stack类是Vector的子类,它继承了Vector的所有方法,并增加了一些能够进行栈操作的方法。

类图

下面是Stack类的类图:

classDiagram
    Stack <|-- Vector
    Stack : +push(element:E)
    Stack : +pop():E
    Stack : +peek():E
    Stack : +empty():boolean
    Stack : +search(element:Object):int

栈的操作方法

1. push(element)

push方法用于将元素压入栈顶。它接受一个元素作为参数,并将该元素添加到栈的顶部。

示例代码:

import java.util.Stack;

Stack<String> stack = new Stack<>();
stack.push("apple");
stack.push("banana");
stack.push("orange");
System.out.println(stack); // 输出: [apple, banana, orange]
2. pop()

pop方法用于从栈顶弹出一个元素,并将其从栈中删除。它返回被弹出的元素。

示例代码:

import java.util.Stack;

Stack<String> stack = new Stack<>();
stack.push("apple");
stack.push("banana");
stack.push("orange");
String fruit = stack.pop();
System.out.println(fruit); // 输出: orange
3. peek()

peek方法用于返回栈顶的元素,但不会将其从栈中删除。

示例代码:

import java.util.Stack;

Stack<String> stack = new Stack<>();
stack.push("apple");
stack.push("banana");
stack.push("orange");
String fruit = stack.peek();
System.out.println(fruit); // 输出: orange
System.out.println(stack); // 输出: [apple, banana, orange]
4. empty()

empty方法用于检查栈是否为空。如果栈为空,则返回true;否则返回false

示例代码:

import java.util.Stack;

Stack<String> stack = new Stack<>();
System.out.println(stack.empty()); // 输出: true
stack.push("apple");
System.out.println(stack.empty()); // 输出: false
5. search(element)

search方法用于查找指定元素在栈中的位置。如果元素存在于栈中,则返回其距离栈顶的位置(栈顶位置为1)。如果元素不在栈中,则返回-1。

示例代码:

import java.util.Stack;

Stack<String> stack = new Stack<>();
stack.push("apple");
stack.push("banana");
stack.push("orange");
int position = stack.search("banana");
System.out.println(position); // 输出: 2
position = stack.search("grape");
System.out.println(position); // 输出: -1

总结

本文介绍了Java自带的栈类Stack,并提供了相关的代码示例。通过使用Stack类,我们可以方便地进行栈相关操作,如压入、弹出、查找等。希望本文能帮助读者更好地理解和使用Java自带的栈。

参考链接

  • [Java Stack class documentation](