![cover](/upload/Java%20高级程序设计.jpg)
Java 高级程序设计:作业 01
Java 高级程序设计:实验一 泛型
代码地址:Github
实验目的和要求
- 初步熟悉泛型的基本概念及用途,熟悉应用开发环境:Eclipse的使用;
- 掌握利用泛型设计常见的类。
实验内容
Question 01
修改程序清单19-1中的GenerisStack类,使用数组而不是ArrayList来实现它。需要在给栈添加新元素之前检查数组的大小。如果数组满了,则创建一个新数组,该数组容量是原先数组容量的两倍,然后将当前数组的元素复制到新数组当中。
package question01;
import java.util.Arrays;
/**
* @author Owem
* @date 2022/9/13 15:15
* @description TODO
**/
public class GenerisStack<E> {
private Object[] list = new Object[2];
private int size = 0;
public int getSize() {
return size;
}
public E peek() {
if (this.isEmpty()) {
System.out.println("空数组");
return null;
}
return (E) list[size - 1];
}
public void push(E o) {
if (size == list.length) {
list = Arrays.copyOf(list, list.length * 2);
}
list[size++] = o;
}
public E pop() {
if (this.isEmpty()) {
System.out.println("空数组");
return null;
}
return (E) list[--size];
}
public boolean isEmpty() {
return size == 0;
}
@Override
public String toString() {
StringBuilder result = new StringBuilder("GenerisStack List:{ ");
for (int i = 0; i < size; i++) {
result.append(list[i]).append(" ");
}
result.append("}");
return result.toString();
}
}
Question 02
实现一个程序满足以下要求
- 系统不少于三个类(Student,Teacher,SortUtils),Student,Teacher都具有一个String类型的编号(学号,教师号)
- SortUtils类中需要使用泛型,SortUitls有一个方法可以传入若干Student或者若干Teacher可以按照他们的编号降序排列后打印输出
- 整个过程中不能使用数组
- 排序比较算法需要自己实现
- 程序主过程是程序启动,随机生成20个学生,然后按照学号降序打印,然后随机生成20个老师,然后按照教师号降序打印
Person.java
package question02;
/**
* @author Owem
* @date 2022/9/13 16:31
* @description TODO
**/
public class Person {
public int compareTo(Object o){
return 0;
}
public Object clone() {
return null;
}
public String toString() {
return "";
}
}
SortUtils.java
package question02;
import java.util.ArrayList;
/**
* @author Owem
* @date 2022/9/13 15:57
* @description TODO
**/
public class SortUtils {
public static void sortID(ArrayList<Person> args) {
for (int i = 0; i < args.size(); i++) {
for (int j = i; j < args.size(); j++) {
if (args.get(i).compareTo(args.get(j)) < 0) {
Person temp = (Person) args.get(i).clone();
args.set(i, args.get(j));
args.set(j, temp);
}
}
}
for(Object l : args) {
System.out.println(l);
}
}
}
Starter.java
package question02;
import java.util.ArrayList;
import java.util.Random;
/**
* @author Owem
* @date 2022/9/13 15:59
* @description TODO
**/
public class Starter {
public static void main(String[] args) {
ArrayList<Person> persons = new ArrayList<>();
for (int i = 0; i < 20; i++) {
persons.add(new Student(getRandomString(5)));
}
SortUtils.sortID(persons);
System.out.println("---------------");
persons = new ArrayList<>();
for (int i = 0; i < 20; i++) {
persons.add(new Teacher(getRandomString(5)));
}
SortUtils.sortID(persons);
}
//length用户要求产生字符串的长度
public static String getRandomString(int length){
String str="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
// String str="0123456789";
Random random=new Random();
StringBuffer sb=new StringBuffer();
for(int i=0;i<length;i++){
int number=random.nextInt(62);
// int number=random.nextInt(10);
sb.append(str.charAt(number));
}
return sb.toString();
}
}
Student.java
package question02;
/**
* @author Owem
* @date 2022/9/13 15:57
* @description TODO
**/
public class Student extends Person implements Cloneable {
private String stuID;
public Student() {
}
public Student(String stuID) {
this.stuID = stuID;
}
public String getStuID() {
return stuID;
}
public void setStuID(String stuID) {
this.stuID = stuID;
}
@Override
public String toString() {
return "Student{" +
"stuID='" + stuID + '\'' +
'}';
}
@Override
public Student clone() {
return new Student(this.stuID);
}
@Override
public int compareTo(Object o) {
return this.stuID.compareTo(((Student) o).stuID);
}
}
Teacher.java
package question02;
/**
* @author Owem
* @date 2022/9/13 15:57
* @description TODO
**/
public class Teacher extends Person implements Cloneable{
private String teaID;
public Teacher() {
}
public Teacher(String teaID) {
this.teaID = teaID;
}
public String getTeaID() {
return teaID;
}
public void setTeaID(String teaID) {
this.teaID = teaID;
}
@Override
public String toString() {
return "Teacher{" +
"teaID='" + teaID + '\'' +
'}';
}
@Override
public int compareTo(Object o) {
return this.teaID.compareTo(((Teacher) o).getTeaID());
}
@Override
public Teacher clone() {
return new Teacher(this.teaID);
}
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Owen
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果