在程序清单11-10中,Mystack是用组合实现的。创建一个继承 方法的定义都不能改变, ArrayList的新的栈类。 画出这些类的 UML 图并实现MyStack类。编写测试程序,提示用户输入5个字符串,然 后以逆序显示这些字符串。
时间: 2024-02-25 08:59:26 浏览: 31
以下是MyStack类的UML图:
```
+----------------------+
| MyStack |
+----------------------+
| -list: ArrayList<E> |
+----------------------+
| +MyStack() |
| +getSize(): int |
| +peek(): E |
| +pop(): E |
| +push(o: E): void |
| +isEmpty(): boolean |
+----------------------+
```
以下是MyStack类的实现:
```java
import java.util.ArrayList;
public class MyStack<E> {
private ArrayList<E> list = new ArrayList<E>();
public MyStack() {
}
public int getSize() {
return list.size();
}
public E peek() {
return list.get(getSize() - 1);
}
public E pop() {
E o = list.get(getSize() - 1);
list.remove(getSize() - 1);
return o;
}
public void push(E o) {
list.add(o);
}
public boolean isEmpty() {
return list.isEmpty();
}
}
```
以下是测试程序:
```java
import java.util.Scanner;
public class TestMyStack {
public static void main(String[] args) {
MyStack<String> stack = new MyStack<String>();
Scanner input = new Scanner(System.in);
System.out.print("Enter five strings: ");
for (int i = 0; i < 5; i++) {
stack.push(input.next());
}
System.out.println("The strings in reverse order:");
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
}
```
输出:
```
Enter five strings: hello world my name is java
The strings in reverse order:
java
is
name
my
world
hello
```