7-3 jmu-Java-05集合(泛型)-10-GeneralStack(Java for PTA)

jmu-Java-05集合(泛型)-10-GeneralStack 以前定义的IntegerStack接口,只能用于存放Integer类型的数据。然而对于栈来说,不管内部存放的是什么类型的数据,基本操作与元素的具体类型无关。 1. 编写一个通用的GeneralStack接口,接口中的操作对任何引用类型的数据都适用。 一旦定义完毕,只能存放一种类型的数据,比如只能存放String或只能存放Integer。GeneralStack接口方法如下: push(item); //如item为null,则不入栈直接返回null。 pop(); 阅读详情

以前定义的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();

提示:

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

3.定义Car对象

属性:

private int id;
private String name;

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

4.main方法说明

  1. 输入选项,有quit, Integer, Double, Car4个选项。如果输入quit,则直接退出。否则,输入整数m与n。m代表入栈个数,n代表出栈个数。然后声明栈变量stack。
  2. 输入Integer,打印Integer Test。建立可以存放Integer类型的ArrayListGeneralStack。入栈m次,出栈n次。打印栈的toString方法。最后将栈中剩余元素出栈并累加输出。
  3. 输入Double ,打印Double Test。剩下的与输入Integer一样。
  4. 输入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 Object push(Object item);
    public Object pop();
    public Object peek();
    public boolean empty();
    public int size();
}

class ArrayListGeneralStack implements GeneralStack{

    ArrayList list = new ArrayList();
    
    //重写接口的方法
    //Object 是 Java 中的一个预定义类,它是所有类的父类。
    //使用 Object 类作为参数类型意味着这个方法可以接受任何类型的对象作为输入。
    @Override
    //如item为null,则不入栈直接返回null。
    public Object push(Object item){
        if(item==null){
            return null;
        }else{
            list.add(item);
            return item;//入栈的同时作为输出结果
        }
    }

    @Override
    //出栈,如为栈为空,则返回null。
    public Object pop(){
        if(list.size()==0){
            return null;
        }else{
            return list.remove(list.size()-1);
        }
    }

    @Override
    //获得栈顶元素,如为空,则返回null.
    public Object peek(){
        if(list.size()==0){
            return null;
        }else{
            return list.get(list.size()-1);
        }
    }

    @Override
    //如为空返回true
    public boolean empty(){
        if(list.size()==0){
            return true;
        }else{
            return false;
        }
    }

    @Override
    //返回栈中元素数量
    public int size(){
        return list.size();
    }

    @Override
    public String toString(){
        return list.toString();
    }
}

class Car{
    private int id;
    private String name;

    public int getId(){
        return id;
    }

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name=name;
    }

    public void setId(int id){
        this.id=id;
    }

    Car(int id,String name){
        this.id=id;
        this.name=name;
    }

    public String toString(){
        return "Car [id="+id+", 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<count;i++){
                    System.out.println("push:"+arrayListGeneralStack.push(sc.nextDouble()));
                }
                for (int i=0;i<pop_time;i++){
                    System.out.println("pop:"+arrayListGeneralStack.pop());
                }
                System.out.println(arrayListGeneralStack.toString());
                double sum=0;
                int size=arrayListGeneralStack.size();
                for (int i=0;i<size;i++){
                    sum+=(double)arrayListGeneralStack.pop();
                }
                System.out.println("sum="+sum);
                System.out.println("interface GeneralStack");
            }else if (s.equals("Integer")){
                System.out.println("Integer Test");
                int count=sc.nextInt();
                int pop_time=sc.nextInt();
                ArrayListGeneralStack arrayListGeneralStack = new ArrayListGeneralStack();
                for (int i=0;i<count;i++){
                    System.out.println("push:"+arrayListGeneralStack.push(sc.nextInt()));
                }
                for (int i=0;i<pop_time;i++){
                    System.out.println("pop:"+arrayListGeneralStack.pop());
                }
                System.out.println(arrayListGeneralStack.toString());
                int sum=0;
                int size=arrayListGeneralStack.size();
                for (int i=0;i<size;i++){
                    sum+=(int)arrayListGeneralStack.pop();
                }
                System.out.println("sum="+sum);
                System.out.println("interface GeneralStack");
            }else if (s.equals("Car")){
                System.out.println("Car Test");
                int count=sc.nextInt();
                int pop_time=sc.nextInt();
                ArrayListGeneralStack arrayListGeneralStack = new ArrayListGeneralStack();
                for (int i=0;i<count;i++){
                    int id=sc.nextInt();
                    String name=sc.next();
                    Car car = new Car(id,name);
                    System.out.println("push:"+arrayListGeneralStack.push(car));
                }
                for (int i=0;i<pop_time;i++){
                    System.out.println("pop:"+arrayListGeneralStack.pop());
                }
                System.out.println(arrayListGeneralStack.toString());
                if (arrayListGeneralStack.size()>0){
                    int size=arrayListGeneralStack.size();
                    for (int i=0;i<size;i++){
                        Car car=(Car) arrayListGeneralStack.pop();
                        System.out.println(car.getName());
                    }
                }
                System.out.println("interface GeneralStack");
            }else if (s.equals("quit")){
                break;
            }
        }
    }
}

 

语义通信实战:跳过“比特”保“语义”,手把手构建轻量级图像压缩重建网络(基于PyTorch) 本文详细介绍了基于PyTorch的轻量级语义通信系统LICRnet的实现,专注于图像压缩重建中的语义信息保留。通过深度可分离卷积、可变窗口多尺度注意力等创新技术,显著降低计算量并提升性能,特别适用于无人机巡检、远程医疗等物联网场景。文章包含完整的代码实现、训练策略及部署优化方案。 阅读详情

相关推荐

逆向实战:基于内存态匿名段分析的 DexProtector 检测绕过策略

本文深入探讨了针对DexProtector加固方案的Frida检测绕过策略。通过分析运行时动态加载到匿名内存段的核心检测逻辑,提出了一套基于内存态分析、定位并转储匿名可执行段,进而通过精准Hook与“等式化替换”等技术实现稳定绕过的实战方法。该方法不仅适用于DexProtector,也对采用类似内存隐藏技术的加固方案具有参考价值。

ik678901的博客 512

java题目集合第六部分(pta)

pta平台java题目集合第六部分

m0_73554747的博客 3057

从零开始:ENSP与VirtualBox的兼容性迷宫与突围指南

本文深入解析eNSP与VirtualBox的兼容性问题,特别是报错40的解决方案。从诊断根源、彻底卸载残留到推荐黄金版本组合,提供了一套完整的实战指南,帮助网络工程师和技术学习者快速解决AR_Base等设备的启动故障,优化虚拟化环境性能。

weixin_29284885的博客 476

jmu-Java-05集合(泛型)-10-GeneralStack (15 分)

以前定义的IntegerStack接口,只能用于存放Integer类型的数据。然而对于栈来说,不管内部存放的是什么类型的数据,基本操作与元素的具体类型无关。 1. 编写一个通用的GeneralStack接口,接口中的操作对任何引用类型的数据都适用。 一旦定义完毕,只能存放一种类型的数据,比如只能存放String或只能存放Integer。GeneralStack接口方法如下: push(it...

fangjial的博客 4965

航空机载总线网络概述

1.机载总线网络概述 现代战斗机的航空电子系统是航空电子技术经历了半个多世纪的漫长演变和不断进步的结果。航空电子系统结构的每次变化,其核心的机载总线网络技术也不断跨上新台阶,而且每次变革都能使飞机性能得到大幅提升。现代飞机的飞行与作战任务包括起飞、巡航、飞行控制、目标搜索、识别跟踪、火控计算、武器投射、制导、电子战、通信等,都需要航空电子系统承担,航空电子系统是现代战斗机的“大脑”和“神经中枢”,机载总线网络则是其关键的“神经网络”。在机载通讯领域发展过程中,具有代表性的典型总线有ARINC429、1553

qq_41854911的博客 1万+

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

VMware如何安装img镜像,VMware如何安装openwrt软路由(含相关工具镜像)

XiaoqiangClub的博客 4004

数据结构与算法练习-Stack栈

用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。分析入队:将元素进栈A 出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈; 如果不为空,栈B直接出栈。代码Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2

我早就想,要这样载着你,翻山越岭 759

【全网首发】2026华为OD双机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)

算法大师! 8763

pta java 7-1 jmu-Java-05集合(泛型)-10-GeneralStack分数 15 作者 郑如滨 单位 集美大学

内部使用ArrayList对象存储,属性名为list。//该方法的代码为不用使用top指针。直接复用ArrayList中已有的方法。pop时应将相应的元素从ArrayList中移除。代码中不要出现类型不安全的强制转换。方法:Eclipse自动生成setter/getter,toString方法。

2501_90791221的博客 415

Halcon 色彩标定:RGB空间下实现白平衡与CCM矩阵合成静态HDR图像

摘要 本文介绍了一种基于Halcon的色彩校正方法,结合白平衡与灰轴约束最小二乘法实现精准颜色还原。方法分为三步:1)自动定位色卡区域并提取灰阶块计算白平衡增益;2)通过前三列色块建立测量值与标准值的映射关系;3)引入灰轴约束条件求解色彩校正矩阵(CCM),确保中性灰区域不偏色。算法采用中位数计算白平衡增益以提高鲁棒性,并通过旋转校正处理色卡倾斜问题。实验表明,该方法能有效消除相机采集的系统色偏,适用于颜色测量、表面检测等机器视觉场景。文末提供了完整代码实现。

LIN943168247的博客 404

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能。本篇文章主要介绍如何使用xlwings对Excel表格进行多行多列数据设置和操作,并给出相应的源代码。接着,我们可以对这个范围内的所有单元格进行操作,如设置字体颜色、填充颜色、对齐方式等。以上就是使用xlwings对Excel表格进行多行多列数据操作和设置字体颜色、填充色和对齐方式的全部内容。最后,我们可以将数据写入到单元格中,也可以从单元格中读取数据。在Excel中,可以通过。

BUG?不存在的! 712

作业08-集合与泛型

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 2. 统计文字中的单词数量并按出现次数排序(题集题目) 2.1 伪代码(不得复制代码,否则扣分) 2.2 实验总结 3. ...

zhrb 175

基于matlab的LFM脉冲压缩仿真

传统雷达测距是通过发射点频脉冲串实现的,通过发射脉冲与回波的时延确定目标的距离。此类方法易于实现,对接收机的要求较低。一般要获取更好的距离分辨力,需要增加发射信号的带宽,对于点频脉冲信号即需要减小发射脉冲宽度;而为获取更大的探测距离,提升雷达威力,则需要发射更大占空比的脉冲串。由于点频信号的时宽带宽积约等于1,因此不能同时增加信号的时宽和带宽。若要保持距离分辨力,增大占空比就需要减少雷达的脉冲重复周期(PRT)。这样会减小雷达的无模糊探测距离,也会造成目标回波频繁被遮挡,损失雷达威力。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 1770

第九次作业

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 答:1.使用List中的remove方法。2.使用迭代器Iterator的remove方法 在这道题中,首先要注意从0开始遍历删除元素会导致一些元素跳过...

250

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

201621123013 《Java程序设计》第9周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 答:第一个函数中,convertStringToList函数中,直接用Scanner sc = new Scanner(line);语句直接将line字...

ailu1957的博客 110

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

作业09-集合与泛型 java

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 使用line.split的方法对一行的元素进行分隔,在使用list里的remove进行删除相同元素 。 方法一:使用list的remove(这里要注意get(...

weixin_30587025的博客 335

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

201621044079 韩烨作业09-集合与泛型

作业09-集合与泛型 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 第一种 remove 方法(要注意用remove之后 下标会自动修改 所以要i--;) for (i...

weixin_30799995的博客 124

java week 9----- 集合与泛型

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 答:remove中注意应该使用equals()方法输入的str参数比较,而不是使用“==”,并且在remove过程中,在删除当前元素后,要让i自减。若不让i自减,...

weixin_30372371的博客 192

201621123075作业09-集合与泛型

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 总结:使用for循环删除元素后只适合删除特定的一个元素,而要删除多个元素可以使用迭代器 for循环: 迭代器: 2...

weixin_34199405的博客 215

作业09-集合与泛型

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 遍历Map的方法: for(Map.Entry<String, ArrayList<Integer>> entry:map.entrySet()) System.out.println(entry.getK...

weixin_30916125的博客 201

201521123073 《Java程序设计》第8周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 (1)集合里面获取对象的时候我们必须进行强制类型转换。 List strList = new ArrayList(); strList.add("I am a String!"); String str = (String)strList.get(0); ...

delun9546的博客 128

201621123080《Java程序设计》第9周学习总结

作业09-集合与泛型 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 实验总结:这题在去空格split(" +")少了+导致会含有多个空格的String读取出错。 方法:第一种list.remove(...

波士地盘 106

201521123096《Java程序设计》第八周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 实验中使用了scanner方法时,就需要使用sc.close()将其关闭。 1.2截图提交结果 2.统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 伪代码(简单写出大体步骤) (1)建立Map; (...

weixin_30735745的博客 86

201521123109《java程序设计》第八周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 List中指定元素的删除(题目4-1) 1.1 实验总结 主要是编写remove等方法删除与str内容相同的元素。 统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 伪代码(简单写出大体步骤) 部分代码: while(tr...

weixin_30379973的博客 71

201621123048《Java程序设计》第九周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 本次作业题集集合 1. List中指定元素的删除(题集题目) 1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 实验总结:在调用remove时,要注意删除一个元素后补上该元素位置的是原元素的下一位 第一种利用正向顺序遍历删除List中元素for(int i =0 ;i&lt...

weixin_33895695的博客 132

201621123058 《java课程设计》第九周学习总结

1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 2. 书面作业 2.1. List中指定元素的删除(题集题目) 2.1.1 实验总结。并回答:列举至少2种在List中删除元素的方法。 通过Scanner in = new scanner(line)读取一行单词,sc.close()以防出现错误; ...

weixin_30276935的博客 138
上一篇: 7-12 sdut-Collection-sort--C~K的班级(II)(java for PTA)
下一篇: 7-4 JAVA-水仙花数(Java for PTA)
「已注销」
博客等级 码龄7年 155粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值