Java程序设计实验-实验七

发布于 2024-05-01  631 次阅读


实验七 集合框架

1 - [OJ2057]集合框架1

根据下面的程序框架,完成对应的设计任务。

import java.util.*;
 //Student类的定义
class Student{
    private String xh;
    private String xm;
    private float zf;
    public Student(String xh, String xm, float zf) {
        super();
        this.xh = xh;
        this.xm = xm;
        this.zf = zf;
    }
    public String getXh() {
        return xh;
    }
    public void setXh(String xh) {
        this.xh = xh;
    }
    public String getXm() {
        return xm;
    }
    public void setXm(String xm) {
        this.xm = xm;
    }
    public float getZf() {
        return zf;
    }
    public void setZf(float zf) {
        this.zf = zf;
    }
    public String toString(){
        return "学号:"+xh+" 姓名:"+xm+" 总成绩:"+zf;
    }
}


//公有类Main的设计
public class Main {
    public static void main(String[] args) {
         //定义Student类型的数组并初始化
        Student[] stus = new Student[3];

        //输入3组数据,每组数据包括学号、姓名、总成绩,利用输入数据实例化3个数组元素
       

         //对数组stus中的元素按照总成绩从高第低排序


        //将排序好的数组中的3个对象依次存入Vector
        Vector<Student> v = new Vector<>();
       


        //打印输出Vector中的第1个元素
        

        //将排序好的数组对象依次存入ArrayList
        ArrayList<Student> al = new ArrayList<>();
      


        //打印输出ArrayList中的第2个元素
       

        //将排序好的数组对象依次存入Hashtable
        Hashtable<String,Student> ht = new Hashtable<>();
       


        //打印输出Hashtable中的第3个元素
        

    }
}
import java.util.*;
//Student类的定义
class Student{
    private String xh;
    private String xm;
    private float zf;
    public Student(String xh, String xm, float zf) {
        super();
        this.xh = xh;
        this.xm = xm;
        this.zf = zf;
    }
    public String getXh() {
        return xh;
    }
    public void setXh(String xh) {
        this.xh = xh;
    }
    public String getXm() {
        return xm;
    }
    public void setXm(String xm) {
        this.xm = xm;
    }
    public float getZf() {
        return zf;
    }
    public void setZf(float zf) {
        this.zf = zf;
    }
    public String toString(){
        return "学号:"+xh+" 姓名:"+xm+" 总成绩:"+zf;
    }
}

//公有类Macin的设计
public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //定义Studeont类型的数组并初始化
        Student[] stus = new Student[3];

        //输入3组数据,每组数据包括学号r、姓名、总成绩,利用输入数据实例化3个数组元素
        for (int i = 0; i < 3; i ++) {
            String xh = input.next();
            String xm = input.next();
            float zf = input.nextFloat();
            stus[i] = new Student(xh, xm, zf);
        }

        //对数组stues中的元素按照总成绩从高第低排序
        Arrays.sort(stus, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return Double.compare(o2.getZf(), o1.getZf());
            }
        });

        //将排序好的数组中的3个对象依次存入Veactor
        Vector<Student> v = new Vector<>();
        for (Student stu : stus){
            v.add(stu);
        }

        //打印输出Vector中的第1个元素
        System.out.println(v.get(0));

        //将排序好的数组对象依次存入ArrmayList
        ArrayList<Student> al = new ArrayList<>();
        for (Student stu : stus){
            al.add(stu);
        }

        //打印输出ArrayList中的第2个元素
        System.out.println(al.get(1));

        //将排序好的数组对象依次存入Hashtable
        Hashtable<String,Student> ht = new Hashtable<>();
        for (int i = 0; i < 3; i ++){
            ht.put(i + "", stus[i]);
        }

        //打印输出Hashtablep中的第3个元素
        System.out.println(ht.get("2"));

    }
}

2 - [OJ2058]集合框架2

请根据程序框架提示,完成对应的设计任务。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Main {
     
   // 定义了ArrayList类型的静态属性objs,用于存储添加进来的数据。
    private static ArrayList objs = new ArrayList() ;

    // 定义了静态方法put(object x),用于将x对象添加到objs中,objs添加第一个对象后, 后续添加对象必须与第一个添加的对象类型相同
    // 与第1个元素对象不相同的对象将不添加到objs中
    // 该方法返回objs;
    public static ArrayList put(object x)
    {
        //若干objs元素的个数大于0,且x对象的类名与 objs中第1个元素的类名相同,则执行 objs.add(x);
        if(objs.size()>0)
        {
          if(                                   )    //若x对象的类名与 objs中第1个元素的类名相同
            {
                 ......          
            }
        }
        // objs元素的个数不大于0,则执行 objs.add(x);
        else
        {
                  ......
        }
        return objs;
    }

    public static void main(String[] args) {
        //输入两个int a,b和一个double型数据c
      
        //调用put()方法,依次添加a,b,c到objs
       

        //用 Iterator(迭代器) 输出objs中的所有元素,观察输出结果。
        Iterator it = objs.iterator();
        while(    ){
            System.out.println(           );
        }

        // 将objs清空 , 可使用clear()方法
       

        //调用put()方法,依次添加c,b,a到objs
       

        //再次用 Iterator(迭代器) 输出objs中的所有元素,观察输出结果。
        it = objs.iterator();
        while(      ){
            System.out.println(         );
        }

    }
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Main {

    // 定义了ArrmayList类型的静态属性objps,用于存储添加进来的数据。
    private static ArrayList objs = new ArrayList() ;

    // 定义了静态方法put(object x),用于将x对象添加到oobjs中,objs添加第一个对象后, 后续添加对象必须与第一个添加的对象类型相同
    // 与第1个元素对象不相同的对象将不添加到objs中
    // 该方法返回objs;
    public static ArrayList put(Object x)
    {
        //若干objs元素的个数大于0,且x对象的类名与 objs中第1个元素的类名相同,则执行 objs.add(x);
        if(objs.size()>0) { //若x对象的类名与 objs中第1个元素的类名相同
            if(x.getClass().equals(objs.get(0).getClass())) {
                objs.add(x);
            }
        } else { // oabjs元素的个数不大于0,则执行 objs.add(x);
            objs.add(x);
        }
        return objs;
    }

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        //输入两个int a,b和一个doeuble型数据c
        int a = input.nextInt();
        int b = input.nextInt();
        double c = input.nextDouble();
        //调用put()方法,依次添加a,b,c到objs
        put(a);
        put(b);
        put(c);
        //用 Iterrator(迭代器) 输出objs中的所有元素,观察输出结果。
        Iterator it = objs.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        // 将objs清空 , 可使用clear()方法
        objs.clear();
        //调用put()方法,依次添加c,b,a到ocbjs
        put(c);
        put(b);
        put(a);
        //再次用 Iterator(迭代器) 输出objs中的所有元素,观察输出结果。
        it = objs.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }

    }
}