实验一    泛型

学号:             姓名:            班级:

【实验目的和要求】

1. 初步熟悉泛型的基本概念及用途,熟悉应用开发环境:Eclipse的使用;

2. 掌握利用泛型设计常见的类。

【实验内容】

1、 修改程序清单19-1中的GenerisStack类,使用数组而不是ArrayList来实现它。需要在给栈添加新元素之前检查数组的大小。如果数组满了,则创建一个新数组,该数组容量是原先数组容量的两倍,然后将当前数组的元素复制到新数组当中。

代码:(不要截图,直接源代码)

public class GenericStack<E> {

​private static int size = 10;

​Object[] nums = new Object[size];

​public int getSize() {

​return nums.length;

​}

​public E peek() {

​return (E) nums[nums.length-1];

​}

​public void push(E o) {

​Object[] nums1 = null;

​if(isFull()) {

​size = size*2;

​nums1 = new Object[size];

​for(int i=0;i<nums.length;i++) {

​nums1[i] = nums[i];

​}

​}

​for(int i=0;i<nums1.length;i++) {

​if(nums1==null) {

​nums[i] =o;

​break;

​}

​}

​}

​public Object pop() {

​Object o =nums[nums.length-1];

​Object[] nums2 = new Object[size-1];

​for(int i=0;i<nums.length-1;i++) {

​nums2[i] = nums[i];

​}

​nums = nums2;

​return o;

​}

​public boolean isEmpty() {

​for(int i=0;i<nums.length;i++) {

​if(nums[i]!=null) {

​return false;

​}

​}

​return true;

​}

​public boolean isFull() {

​for(int i=0;i<nums.length;i++) {

​if(nums[i]==null) {

​return false;

​}

​}

​return true;

​}

​public String toString() {

​return "stack" + nums.toString();

​}

}

2、 实现一个程序满足以下要求

1)系统不少于三个类(Student,Teacher,SortUtils),Student,Teacher都具有一个String类型的编号(学号,教师号)

2)SortUtils类中需要使用泛型,SortUitls有一个方法可以传入若干Student或者若干Teacher可以按照他们的编号降序排列后打印输出

3)整个过程中不能使用数组

4)排序比较算法需要自己实现

5)程序主过程是程序启动,随机生成20个学生,然后按照学号降序打印,然后随机生成20个老师,然后按照教师号降序打印;

代码:(不要截图,直接源代码)

import java.util.Collections;

import java.util.List;

public class SortUtils {

​public void sort(List<Student> stus,List<Teacher> teas) {​

for(int i  = 0; i < stus.size()-1;i++){

for(int j = i + 1;j < stus.size();j++){

if(stus.get(i).getStuId().compareTo( stus.get(j).getStuId())<0){

​Student tempStu = stus.get(j);

Collections.swap(stus, j, i);

stus.get(i).setStuId(tempStu.getStuId());

stus.get(i).setStuName(tempStu.getStuName());

}

}

}

System.out.println(stus);

for(int i  = 0; i < teas.size()-1;i++){

for(int j = i + 1;j < teas.size();j++){

if(teas.get(i).gettId().compareTo( teas.get(j).gettId())<0){

​Teacher tempStu = teas.get(j);

Collections.swap(stus, j, i);

teas.get(i).settId(tempStu.gettId());

teas.get(i).settName(tempStu.gettName());

}

}

}

System.out.println(teas);

​}

}

import java.util.ArrayList;

import java.util.Random;

public class Starter {

​public static void main(String[] args) {

​        int num ;

​        Random r = new Random();

​        ArrayList<Student> stus = newArrayList<Student>();

​        ArrayList<Teacher> teas = newArrayList<Teacher>();

​        for (int i = 0; i < 20; i++) {

​            num = r.nextInt(5) +1;

​            String id = String.valueOf(num);

​            String name = String.valueOf(num);

​            Student tempStu = newStudent(id,name);

​            stus.add(tempStu);

​            Teacher tempTea = newTeacher(id,name);

​            teas.add(tempTea);

​        }

​        new SortUtils().sort(stus, teas);

​    }

​}

public class Student {

​private String stuId;

​private String stuName;

​public Student() {

​}

​public Student(String stuId, String stuName) {

​super();

​this.stuId = stuId;

​this.stuName = stuName;

​}

​public String getStuId() {

​return stuId;

​}

​public void setStuId(String stuId) {

​this.stuId = stuId;

​}

​public String getStuName() {

​return stuName;

​}

​public void setStuName(String stuName) {

​this.stuName = stuName;

​}

​@Override

​public String toString() {

​return "Student [stuId=" + stuId + ", stuName=" + stuName + "]";

​}

}

public class Teacher {

​private String tId;

​private String tName;

​public Teacher() {

​}

​public Teacher(String tId, String tName) {

​super();

​this.tId = tId;

​this.tName = tName;

​}

​public String gettId() {

​return tId;

​}

​public void settId(String tId) {

​this.tId = tId;

​}

​public String gettName() {

​return tName;

​}

​public void settName(String tName) {

​this.tName = tName;

​}

​@Override

​public String toString() {

​return "Teacher [tId=" + tId + ", tName=" + tName + "]";

​}

}

ZUCC高级程序设计实验01相关推荐

  1. 吉林大学超星慕课平台——高级语言程序设计 实验01 顺序程序设计(2022级)

    实验01 顺序程序设计(2022级) 1. (程序题) 表达式计算. 问题描述:编写程序,计算并输出如下表达式的值: y= 其中a,x,y均为float类型,取值为3.1415926.输出结果要求保留 ...

  2. javascript高级程序设计--笔记01

    概述 JavaScript的实现包含三个部分: 1  核心(ECMAScript)   提供核心语言功能 2  文档对象模型(DOM)  一套提供了访问以及操作网页内容的API 3  浏览器对象模型( ...

  3. JavaScript高级程序设计笔记01 | 第一章到第四章 | 关键字与保留字 | 数据类型 | 操作符 | 作用域

    观前提示:大部分都是书上的内容,个人理解的部分的较少,看我的笔记还不如去看书 第二章 async:可选.表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或 等待加载其他脚本.只对外部 ...

  4. linux系统程序问题报告,Linux程序设计实验报告.docx

    Linux程序设计实验报告.docx Linux程序设计实验指导书实验类别课内实验 实验课程名称Linux程序设计实验室名称软件工程专业实验室 实验课程编号 000 总 学 时32 学 分 2 适用专 ...

  5. .NET 程序设计实验 含记事本通讯录代码

    实验一  .NET 程序设计基本流程 [实验内容] 一.控制台.Windows 应用程序.ASP.NET 程序开发流程 1.熟悉开发平台 2.分别开发控制台.Windows 应用程序.ASP.NET ...

  6. 高级程序设计c语言试卷答案,高级程序设计语言半期试卷答案.doc

    高级程序设计语言半期试卷答案 西南交通大学2009-2010学年第1学期半期试卷 课程代码 3243800 课程名称 高级语言程序设计 考试时间 90分钟 题号一二三四五六七八九十总成绩得分 阅卷教师 ...

  7. javascript 高级程序设计_重读《JavaScript高级程序设计》

    最近自己在休假,打算闭门几天将<JavaScript高级程序设计>(第3版)这本良心教材再回顾一遍.目前自己进入前端领域两年多,现在重读并记录下这本教材的"硬"知识点 ...

  8. Linux程序设计实验项目六,《linux程序设计》实验教学大纲

    <linux程序设计>实验教学大纲 课程名称:Linux程序设计 课程编号:408412420408436407 适用专业:计算机科学与技术网络工程软件工程 总 学 分:3 总 学 时:4 ...

  9. java程序设计实验报告册_20145215《Java程序设计》实验一实验报告

    实验一 Java开发环境的熟悉 实验内容及步骤 使用JDK编译.运行简单的Java程序 命令行下程序开发: 在命令行下建立实验目录,进入该目录后创建exp1目录 敲入以下代码: package exp ...

最新文章

  1. 概率论-4.1 大数定律
  2. 【2016计概A期末】照亮房间
  3. 使用JUnit对ADF应用程序进行单元测试
  4. 求两个数字的乘积,如果大于0,说明两个数字同号,如果小于0,说明两个数字异号,如果等于0,说明其中一个是0
  5. 《UNIX环境高级编程 3rd》笔记(1 / 21):UNIX基础知识
  6. 红豆、绿豆、黑豆、花生、莲子、薏仁米放在一起吃,可以吗?
  7. ibatis返回结果映射到HashMap时,列名无效的问题
  8. 【C++笔记】构造函数与析构函数相关知识
  9. 047——VUE中css过渡动作实例
  10. 车牌识别LPR系统系列文章汇总
  11. 基于python解析网易云歌单.
  12. Java基础视频教程
  13. TCP和UDP区别?如何改进TCP
  14. 计算机界面右下角,电脑开机卡主板界面右下角显示B4~
  15. 思维导图软件哪个好?盘点10款好用的思维导图软件
  16. dns域名解析原理及过程
  17. 国际标准时间显示格式
  18. 差动变压器的振动测量实验 思考题
  19. EMW3080+STC15轻松实现设备上云1(阿里云物联网平台、智能生活开放平台)
  20. python2.7实现简单日记本,兼容windows和linux

热门文章

  1. CentOS7-命令-创建用户(useradd)
  2. INPUT输入框灰体提示
  3. 搬:90 个名企笔试题和算法题
  4. Python 3网络爬虫开发实战
  5. 狼人杀玩法理解之(语言家)
  6. bili上李沐大神的d2l中的损失函数的理解
  7. bili—Excel零基础入门进阶到函数
  8. 1---电子实物认知
  9. 音视频基础知识 颜色模型
  10. 2022年必刷前端高频面试题