Java中的Stack indexOf(Object, int)方法示例
Stack类是Java中的一个栈,它是基于Vector实现的。栈是一种后进先出(Last-In-First-Out, LIFO)的数据结构,类似于一摞盘子,只有最上面的盘子可以取出来,而新的盘子只能放在最上面。Stack类中的indexOf(Object, int)方法用于查找指定对象在栈中第一次出现的位置,可以通过传入一个起始索引值来减轻查找的负担。
Stack类概述
Stack类是Vector类的子类,它继承了Vector类的全部方法,通过限制这些方法的访问权限,将Vector类改造成为了一个栈。
Stack类的使用方法和ArrayList类和Vector类较为相似。它支持元素的插入、删除和访问等操作,同时还支持对栈顶元素的查询和栈的大小查询等方法。以下是Stack类的使用示例:
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 入栈
stack.push(1);
stack.push(2);
stack.push(3);
// 栈的大小
System.out.println("栈的大小为:" + stack.size());
// 栈顶元素
System.out.println("栈顶元素为:" + stack.peek());
// 出栈
stack.pop();
System.out.println("出栈后栈顶元素为:" + stack.peek());
// 判断是否为空
System.out.println("栈是否为空:" + stack.isEmpty());
}
}
indexOf(Object, int)方法概述
Stack类中的indexOf(Object, int)方法用于查找指定对象在栈中第一次出现的位置,可以通过传入一个起始索引值来减轻查找的负担。
该方法的声明如下:
public int indexOf(Object o, int index);
其中,参数o为要查找的对象,参数index为起始的查找位置。
该方法的返回值为要查找的对象在此栈中第一次出现的位置;如果对象不在栈中,则返回-1。
indexOf(Object, int)方法示例
以下示例展示了如何使用Stack类的indexOf(Object, int)方法查找栈中第一个为某个指定对象的位置。
import java.util.Stack;
public class StackDemo {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
stack.push("Java");
stack.push("Python");
stack.push("Go");
stack.push("Java");
int index = stack.indexOf("Java", 0);
System.out.println("从头开始查找Java对象的位置为:" + index);
index = stack.indexOf("Java", 2);
System.out.println("从索引2开始查找Java对象的位置为:" + index);
index = stack.indexOf("C++", 0);
System.out.println("从头开始查找C++对象的位置为:" + index);
}
}
输出结果为:
从头开始查找Java对象的位置为:0
从索引2开始查找Java对象的位置为:3
从头开始查找C++对象的位置为:-1
结论
通过本文的介绍,我们学习了如何使用Java中Stack类的indexOf(Object, int)方法查找栈中第一个为某个指定对象的位置。该方法可通过指定查找的起始位置,提高查找效率,适合于大型数据集的查找。