博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
7-2 jmu-Java-05集合(泛型)-10-GeneralStack (25分)
阅读量:4035 次
发布时间:2019-05-24

本文共 3706 字,大约阅读时间需要 12 分钟。

以前定义的IntegerStack接口,只能用于存放Integer类型的数据。然而对于栈来说,不管内部存放的是什么类型的数据,基本操作与元素的具体类型无关。

1. 编写一个通用的GeneralStack接口,接口中的操作对任何引用类型的数据都适用。

一旦定义完毕,只能存放一种类型的数据,比如只能存放String或只能存放Integer。GeneralStack接口方法如下:

push(item); //如item为null,则不入栈直接返回null。

pop(); //出栈,如为栈为空,则返回null。
peek(); //获得栈顶元素,如为空,则返回null.
public boolean empty();//如为空返回true
public int size(); //返回栈中元素数量

2.定义GeneralStack的实现类ArrayListGeneralStack

内部使用ArrayList对象存储,属性名为list。

方法: public String toString()//该方法的代码为return list.toString();

提示:

不用使用top指针。直接复用ArrayList中已有的方法。pop时应将相应的元素从ArrayList中移除。代码中不要出现类型不安全的强制转换。

3.定义Car对象

属性:

private int id;

private String name;

方法:Eclipse自动生成setter/getter,toString方法。

4.main方法说明

输入选项,有quit, Integer, Double, Car4个选项。如果输入quit,则直接退出。否则,输入整数m与n。m代表入栈个数,n代表出栈个数。然后声明栈变量stack。输入Integer,打印Integer Test。建立可以存放Integer类型的ArrayListGeneralStack。入栈m次,出栈n次。打印栈的toString方法。最后将栈中剩余元素出栈并累加输出。输入Double ,打印Double Test。剩下的与输入Integer一样。输入Car,打印Car Test。其他操作与Integer、Double基本一样。只不过最后将栈中元素出栈,并将其name依次输出。

2、3、4步骤做完都要使用代码System.out.println(stack.getClass().getInterfaces()[0]);打印标识信息

特别注意:如果栈为空的时候继续出栈,则返回null

输入样例

Integer

5
2
1 2 3 4 5
Double
5
3
1.1 2.0 4.9 5.7 7.2
Car
3
2
1 Ford
2 Cherry
3 BYD
quit

输出样例

Integer Test

push:1
push:2
push:3
push:4
push:5
pop:5
pop:4
[1, 2, 3]
sum=6
interface GeneralStack
Double Test
push:1.1
push:2.0
push:4.9
push:5.7
push:7.2
pop:7.2
pop:5.7
pop:4.9
[1.1, 2.0]
sum=3.1
interface GeneralStack
Car Test
push:Car [id=1, name=Ford]
push:Car [id=2, name=Cherry]
push:Car [id=3, name=BYD]
pop:Car [id=3, name=BYD]
pop:Car [id=2, name=Cherry]
[Car [id=1, name=Ford]]
Ford
interface GeneralStack

import java.util.*; interface GeneralStack
{
public T push(T item); public T pop(); public T peek(); public boolean empty(); public int size();}class ArrayListGeneralStack implements GeneralStack{
ArrayList list=new ArrayList(); @Override public String toString() {
return list.toString(); } @Override public Object push(Object item) {
if (list.add(item)){
return item; }else {
return false; } } @Override public Object pop() {
if (list.size()==0){
return null; } return list.remove(list.size()-1); } @Override public Object peek() {
return list.get(list.size()-1); } @Override public boolean empty() {
if (list.size()==0){
return true; }else {
return false; } } @Override public int size() {
return list.size(); }}class Car{
private int id; private String name; @Override public String toString() {
return "Car [" + "id=" + id + ", name=" + name + ']'; } public int getId() {
return id; } public void setId(int id) {
this.id = id; } public String getName() {
return name; } public void setName(String name) {
this.name = name; } public Car(int id, String name) {
this.id = id; this.name = name; }}public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in); while (true){
String s=sc.nextLine(); if (s.equals("Double")){
System.out.println("Double Test"); int count=sc.nextInt(); int pop_time=sc.nextInt(); ArrayListGeneralStack arrayListGeneralStack = new ArrayListGeneralStack(); for (int i=0;i
0){
int size=arrayListGeneralStack.size(); for (int i=0;i

转载地址:http://jqbdi.baihongyu.com/

你可能感兴趣的文章
Jenkins 启动命令
查看>>
Maven项目版本继承 – 我必须指定父版本?
查看>>
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>
Django 的Error: [Errno 10013]错误
查看>>
机器学习实战之决策树(一)
查看>>
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[leetCode By Python] 14. Longest Common Prefix
查看>>
[leetCode By Python]111. Minimum Depth of Binary Tree
查看>>