用泛型数组实现自定义堆栈类,可处理任意类型数据。其中堆栈类功能中要求至少包含以下几点: • 不带参数构造方法和带一个长度参数构造方法,表明堆栈的初始长度 • 入栈push操作和出栈pop操作 • 访问栈顶元素peek方法 • 获得栈中当前保存元素数size方法 • 其它自定义方法,比如显示堆栈中保存所有元素方法 定义一测试方法,可分别构建整数类型、浮点类型、字符串类型堆栈进行测试,对每个栈自行调用上述至少三种方法实现操作,并显示堆栈中元素
时间: 2023-06-18 19:07:07 浏览: 96
以下是用泛型数组实现自定义堆栈类的代码:
```java
public class MyStack<E> {
private E[] elements;
private int size;
public MyStack() {
this(10);
}
public MyStack(int initialCapacity) {
elements = (E[]) new Object[initialCapacity];
}
public void push(E element) {
ensureCapacity();
elements[size++] = element;
}
public E pop() {
if (size == 0) {
throw new NoSuchElementException();
}
E element = elements[--size];
elements[size] = null;
return element;
}
public E peek() {
if (size == 0) {
throw new NoSuchElementException();
}
return elements[size - 1];
}
public int size() {
return size;
}
public void display() {
for (int i = size - 1; i >= 0; i--) {
System.out.println(elements[i]);
}
}
private void ensureCapacity() {
if (size == elements.length) {
elements = Arrays.copyOf(elements, size * 2);
}
}
}
```
下面是测试方法,可以构建整数类型、浮点类型、字符串类型堆栈进行测试:
```java
public static void main(String[] args) {
// 整数类型堆栈测试
MyStack<Integer> intStack = new MyStack<>();
intStack.push(1);
intStack.push(2);
intStack.push(3);
System.out.println("栈顶元素:" + intStack.peek());
System.out.println("栈大小:" + intStack.size());
intStack.display();
System.out.println();
// 浮点类型堆栈测试
MyStack<Double> doubleStack = new MyStack<>();
doubleStack.push(1.1);
doubleStack.push(2.2);
doubleStack.push(3.3);
System.out.println("栈顶元素:" + doubleStack.peek());
System.out.println("栈大小:" + doubleStack.size());
doubleStack.display();
System.out.println();
// 字符串类型堆栈测试
MyStack<String> stringStack = new MyStack<>();
stringStack.push("hello");
stringStack.push("world");
stringStack.push("java");
System.out.println("栈顶元素:" + stringStack.peek());
System.out.println("栈大小:" + stringStack.size());
stringStack.display();
}
```
输出结果如下:
```
栈顶元素:3
栈大小:3
3
2
1
栈顶元素:3.3
栈大小:3
3.3
2.2
1.1
栈顶元素:java
栈大小:3
java
world
hello
```
阅读全文