问题描述
提示:需要结合书上程序清单19-1
定义一个新的栈继承子自ArrayList的栈类,提示用户输入五个字符串然后逆序显示它们
难点分析:
提示:建议有泛型基础,掌握类结构并且了解ArrayList
首先GenericStack需要继承ArrayList,之后基本就是仿照GenericStack就好了,最后直接用super调用ArrayList就好。
代码:
提示:大部分都是模仿,有些代码在ideal中会有警告,本人是初学者,有些解决了,但是感觉还是不怎么好,但是代码可执行,之后解决了会进行跟新
import java.util.ArrayList;
import java.util.Scanner;
public class exe19_02 {
public static void main(String[] args) {
GenericStack<String> genericStack = new GenericStack<>();
// 测试数据:
genericStack.push("Hello");
genericStack.push("world");
System.out.println("this size: " + genericStack.getSize());
System.out.println("this peek: " + genericStack.peek());
System.out.println("this pop: " + genericStack.pop());
System.out.println("this isEmpty?: " + genericStack.isEmpty());
System.out.println("this toString: " + genericStack.toString());
//题目要求:
GenericStack<String> genericStack1 = new GenericStack<>();
Scanner input = new Scanner(System.in);
System.out.print("Please enter five strings: ");
for (int i = 0; i < 5; i++) {
genericStack1.add(input.next());
}
for (int i = 0; i < 5; i++) {
System.out.println(genericStack1.pop());
}
}
}
class GenericStack<E> extends ArrayList<E> {
public int getSize() {
return super.size();
}
public E peek() {
return (E) super.get(getSize() - 1);
}
public void push(E o) {
super.add(o);
}
public E pop() {
E o = (E) super.get(getSize() - 1);
super.remove(getSize() - 1);
return o;
}
public boolean isEmpty() {
return super.isEmpty();
}
@Override
public String toString() {
return "stack: " + super.toString();
}
}